diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-09-07 21:53:55 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-09-26 14:20:07 -0400 |
commit | ea186080fe2b94b21f3ac8ad7941948211d5e67a (patch) | |
tree | 12236c1b8103b95409be4e5c05493aeab3f48b95 | |
parent | 9373a4b8918683fa5dfdba707d1516dbfdeb9c62 (diff) | |
download | binutils-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.exp | 19 |
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 + } + } } } |