diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2016-01-22 21:21:45 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2016-01-22 21:21:45 +0100 |
commit | 31d765d3801c63a66312023181edb3af25c03598 (patch) | |
tree | dd5c837e623d397b32a8f067c1fb61396a50b57e /gdb/testsuite/gdb.gdb | |
parent | b2bae2f79b11a87af3dbc2a6ca3c0c4987ecfbba (diff) | |
download | gdb-31d765d3801c63a66312023181edb3af25c03598.zip gdb-31d765d3801c63a66312023181edb3af25c03598.tar.gz gdb-31d765d3801c63a66312023181edb3af25c03598.tar.bz2 |
testsuite: Fix PR threads/19422 regression + Guile regression
The PR threads/19422 patchset added a new regression.
Additionally below it there was already a regression if --with-guile (which is
default if Guile is found) was used.
racy case #1:
(xgdb) PASS: gdb.gdb/selftest.exp: Set xgdb_prompt
^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff583bfdd in poll () from /lib64/libc.so.6^M
(gdb) FAIL: gdb.gdb/selftest.exp: send ^C to child process
signal SIGINT^M
Continuing with signal SIGINT.^M
^C^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff5779da0 in sigprocmask () from /lib64/libc.so.6^M
(gdb) PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process
backtrace^M
errstring=errstring@entry=0x7e0e6c "", mask=mask@entry=RETURN_MASK_ALL) at exceptions.c:240^M
errstring=errstring@entry=0x7e0e6c "", mask=mask@entry=RETURN_MASK_ALL) at exceptions.c:240^M
(gdb) PASS: gdb.gdb/selftest.exp: backtrace through signal handler
racy case #2:
(xgdb) PASS: gdb.gdb/selftest.exp: Set xgdb_prompt
^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff583bfdd in poll () from /lib64/libc.so.6^M
(gdb) FAIL: gdb.gdb/selftest.exp: send ^C to child process
signal SIGINT^M
Continuing with signal SIGINT.^M
^C^M
Thread 2 "xgdb" received signal SIGINT, Interrupt.^M
[Switching to Thread 0x7ffff3b7f700 (LWP 13227)]^M
0x00007ffff6b88b10 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0^M
(gdb) PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process
backtrace^M
(gdb) FAIL: gdb.gdb/selftest.exp: backtrace through signal handler
Pedro Alves:
Not all targets support thread names, and even those that do, not all
use the program name as default thread name -- I think that's only true
for GNU/Linux, actually. So I think it's best to not expect that, like:
-re "(Thread .*|Program) received signal SIGINT.*$gdb_prompt $" {
gdb/testsuite/ChangeLog
2016-01-22 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix testsuite compatibility with Guile.
* gdb.gdb/selftest.exp (send ^C to child process): Accept also Thread.
(thread 1): New test for backtrace through signal handler.
Diffstat (limited to 'gdb/testsuite/gdb.gdb')
-rw-r--r-- | gdb/testsuite/gdb.gdb/selftest.exp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp index 4d55cb5..3d98a0c 100644 --- a/gdb/testsuite/gdb.gdb/selftest.exp +++ b/gdb/testsuite/gdb.gdb/selftest.exp @@ -436,8 +436,9 @@ proc test_with_self { executable } { if ![target_info exists gdb,nointerrupts] { set description "send ^C to child process" send_gdb "\003" + # "Thread 1" is displayed iff Guile support is linked in. gdb_expect { - -re "Program received signal SIGINT.*$gdb_prompt $" { + -re "(Thread 1 .*|Program) received signal SIGINT.*$gdb_prompt $" { pass "$description" } -re ".*$gdb_prompt $" { @@ -453,6 +454,10 @@ proc test_with_self { executable } { gdb_test "signal SIGINT" \ "Continuing with signal SIGINT.*" \ "$description" + + # Switch back to the GDB thread if Guile support is linked in. + # "signal SIGINT" could also switch the current thread. + gdb_test "thread 1" {\[Switching to thread 1 .*\].*} # get a stack trace # |