diff options
-rw-r--r-- | gdb/testsuite/gdb.threads/manythreads.exp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/gdb/testsuite/gdb.threads/manythreads.exp b/gdb/testsuite/gdb.threads/manythreads.exp index f2b8bb7..8e0df3e 100644 --- a/gdb/testsuite/gdb.threads/manythreads.exp +++ b/gdb/testsuite/gdb.threads/manythreads.exp @@ -63,21 +63,12 @@ proc interrupt_and_wait { message } { send_gdb "\003" + set saw_signal 0 + set order_ok 1 gdb_test_multiple "" $message { - -re "\\\[New \[^\]\]*\\\]\r\n" { - exp_continue - } - -re "\\\[\[^\]\]* exited\\\]\r\n" { - exp_continue - } - -re " received signal SIGINT.*$gdb_prompt $" { - pass "$message" - } - -re "$gdb_prompt $" { - # Note that with this regex order, if GDB emits [New - # Thread ...] output between "Thread NNN received signal" - # and the prompt, the "received signal" regex won't match. - # That's good, as if we see that happening, it's a + -re "\r\n\\\[New \[^\r\n\]*(?=\r\n)" { + # Note if GDB emits [New Thread ...] output between + # "Thread NNN received signal" and the prompt, it's a # regression. # # GDB makes sure to notify about signal stops, end of @@ -100,7 +91,20 @@ proc interrupt_and_wait { message } { # foo () at foo.c:31 # 31 bar (); # - fail $message + if { $saw_signal } { + set order_ok 0 + } + exp_continue + } + -re "\r\n\\\[\[^\r\n]* exited\\\](?=\r\n)" { + exp_continue + } + -re "\r\n\[^\r\n]* received signal SIGINT\[^\r\n\]*(?=\r\n)" { + set saw_signal 1 + exp_continue + } + -re -wrap "" { + gdb_assert {$saw_signal && $order_ok} $gdb_test_name } } } |