diff options
Diffstat (limited to 'gdb/testsuite/gdb.threads/non-ldr-exc-3.exp')
-rw-r--r-- | gdb/testsuite/gdb.threads/non-ldr-exc-3.exp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp index cc7da1a750e..3e7a3a1295b 100644 --- a/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp +++ b/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp @@ -31,18 +31,25 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab return -1 } -proc do_test { lock_sched } { - with_test_prefix "lock-sched$lock_sched" { +proc do_test { lock_sched nonstop } { + with_test_prefix "lock-sched=$lock_sched,non-stop=$nonstop" { global executable - clean_restart ${executable} + save_vars { GDBFLAGS } { + append GDBFLAGS " -ex \"set non-stop $nonstop\"" + clean_restart ${executable} + } if ![runto_main] { return -1 } gdb_breakpoint [gdb_get_line_number "break-here"] - gdb_continue_to_breakpoint "break-here" ".* break-here .*" + gdb_test_multiple "continue" "continue to breakpoint" { + -re ".*Breakpoint.*break-here.*" { + pass "continue to breakpoint" + } + } # Also test with sched-lock to make sure we can follow the # non-leader thread execing even though the main thread wasn't @@ -51,11 +58,22 @@ proc do_test { lock_sched } { gdb_test_no_output "set scheduler-locking on" } + if { $nonstop == "on" } { + gdb_test "thread 2" "Switching.*" + } + gdb_test "continue" \ ".*is executing new program.*Breakpoint 1, main.* at .*" \ "continue over exec" } } -do_test 0 -do_test 1 +foreach nonstop {"on" "off"} { + foreach schedlock {"on" "off"} { + if {$schedlock == "on" && $nonstop == "on"} { + # Schedule locking has no effect in nonstop mode. + continue + } + do_test $schedlock $nonstop + } +} |