From c0fa8fbd1c2f02921b90083e595a8452d3d51ba2 Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Tue, 8 Sep 2015 19:49:04 -0700 Subject: [PATCH] Improve hand-call-in-threads.exp failure handling. 2015-09-08 Sandra Loosemore gdb/testsuite/ * gdb.threads/hand-call-in-threads.exp: Make sure the thread command actually switches threads. Give up on remaining tests if target fails to stop at breakpoint. --- gdb/testsuite/ChangeLog | 6 ++++++ .../gdb.threads/hand-call-in-threads.exp | 21 ++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2a1cc072757..fdd9e9558c9 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-09-08 Sandra Loosemore + + * gdb.threads/hand-call-in-threads.exp: Make sure the thread + command actually switches threads. Give up on remaining + tests if target fails to stop at breakpoint. + 2015-09-03 Pierre-Marie de Rodat * gdb.ada/funcall_char.exp: New testcase. diff --git a/gdb/testsuite/gdb.threads/hand-call-in-threads.exp b/gdb/testsuite/gdb.threads/hand-call-in-threads.exp index a9b90e13e9a..64af5110d98 100644 --- a/gdb/testsuite/gdb.threads/hand-call-in-threads.exp +++ b/gdb/testsuite/gdb.threads/hand-call-in-threads.exp @@ -84,10 +84,25 @@ set total_nr_threads [expr $NR_THREADS + 1] # Thread numbering in gdb is origin-1, so begin numbering at 1. for { set i 1 } { $i <= $total_nr_threads } { incr i } { set thread_nr $i - gdb_test "thread $thread_nr" ".*" \ + gdb_test "thread $thread_nr" \ + ".*Switching to thread $thread_nr.*" \ "prepare to make hand call, thread $thread_nr" - gdb_test "call hand_call()" "Breakpoint 3, .*" \ - "hand call, thread $thread_nr" + gdb_test_multiple "call hand_call()" "" { + -re "Breakpoint 3, .*$gdb_prompt $" { + pass "hand call, thread $thread_nr" + } + -re "$gdb_prompt $" { + fail "hand call, thread $thread_nr (got gdb prompt)" + } + timeout { + # If the target fails to stop at the breakpoint, it just ends + # up in an infinite loop in hand_call(). If this happens + # and we have lost the GDB prompt, no further tests in + # this file will work and there is no point in continuing. + fail "hand call, thread $thread_nr (runaway target)" + return 0 + } + } } # Now have each hand-called function return. -- 2.30.2