aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2023-09-07 21:53:55 -0400
committerSimon Marchi <simon.marchi@efficios.com>2023-09-26 14:20:07 -0400
commitea186080fe2b94b21f3ac8ad7941948211d5e67a (patch)
tree12236c1b8103b95409be4e5c05493aeab3f48b95
parent9373a4b8918683fa5dfdba707d1516dbfdeb9c62 (diff)
downloadbinutils-ea186080fe2b94b21f3ac8ad7941948211d5e67a.zip
binutils-ea186080fe2b94b21f3ac8ad7941948211d5e67a.tar.gz
binutils-ea186080fe2b94b21f3ac8ad7941948211d5e67a.tar.bz2
gdb/testsuite: add xfail for gdb/29965 in gdb.threads/process-exit-status-is-leader-exit-status.exp
Bug 29965 shows on a Linux kernel >= 6.1, that test fails consistently with: FAIL: gdb.threads/process-exit-status-is-leader-exit-status.exp: iteration=0: continue (the program exited) ... FAIL: gdb.threads/process-exit-status-is-leader-exit-status.exp: iteration=9: continue (the program exited) This is due to a change in Linux kernel behavior [1] that affects exactly what this test tests. That is, if multiple threads (including the leader) call SYS_exit, the exit status of the process should be the exit status of the leader. After that change in the kernel, it is no longer the case. Add an xfail in the test, based on the Linux kernel version. The goal is that if a regression is introduced in GDB regarding this feature, it should be caught if running on an older kernel where the behavior was consistent. [1] https://bugzilla.suse.com/show_bug.cgi?id=1206926 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29965 Change-Id: If6ab7171c92bfc1a3b961c7179e26611773969eb Approved-By: Tom de Vries <tdevries@suse.de>
-rw-r--r--gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp19
1 files changed, 18 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp b/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp
index f64d6a7..e470fe2 100644
--- a/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp
+++ b/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp
@@ -41,6 +41,23 @@ for {set iteration 0} {$iteration < 10} {incr iteration} {
return
}
- gdb_test "continue" "\\\[Inferior 1 \\(.*\\) exited with code 01\\\]"
+ gdb_test_multiple "continue" "" {
+ -re -wrap "\\\[Inferior 1 \\(.*\\) exited with code 01\\\]" {
+ pass $gdb_test_name
+ }
+
+ -re -wrap "\\\[Inferior 1 \\(.*\\) exited with code $::decimal\\\]" {
+ set lkv [linux_kernel_version]
+
+ if { [llength $lkv] != 0 } {
+ if { [version_compare {6 1 0} <= $lkv] } {
+ xfail "$gdb_test_name (PR 29965)"
+ return
+ }
+ }
+
+ fail $gdb_test_name
+ }
+ }
}
}