From 31d765d3801c63a66312023181edb3af25c03598 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 22 Jan 2016 21:21:45 +0100 Subject: [PATCH] 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 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. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.gdb/selftest.exp | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d7721d593d..5e99adf8b1 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-01-22 Jan Kratochvil + + 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. + 2016-01-22 Yao Qi PR testsuite/19491 diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp index 4d55cb5c53..3d98a0c58e 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 #