-# Copyright 2009-2012 Free Software Foundation, Inc.
+# Copyright 2009-2015 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
continue
}
-set testfile "non-ldr-exc-4"
-set srcfile ${testfile}.c
+standard_testfile
set executable ${testfile}
-set binfile ${objdir}/${subdir}/${executable}
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
return -1
}
-proc do_test { lock_sched } { with_test_prefix "lock-sched$lock_sched" {
- global executable
+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
- }
+ if ![runto_main] {
+ return -1
+ }
- gdb_breakpoint [gdb_get_line_number "break-here"]
- gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+ gdb_breakpoint [gdb_get_line_number "break-here"]
+ gdb_continue_to_breakpoint "break-here" ".* break-here .*"
- # Also test with sched-lock to make sure we can follow the
- # non-leader thread execing even though the main thread wasn't
- # resumed before the exec.
- if { $lock_sched } {
- gdb_test_no_output "set scheduler-locking on"
- }
+ # Also test with sched-lock to make sure we can follow the
+ # non-leader thread execing even though the main thread wasn't
+ # resumed before the exec.
+ if { $lock_sched } {
+ gdb_test_no_output "set scheduler-locking on"
+ }
- gdb_test "continue" \
- ".*is executing new program.*Breakpoint 1, main.* at .*" \
- "continue over exec"
-}}
+ if { $nonstop == "on" } {
+ gdb_test "thread 2" "Switching.*"
+ }
-do_test 0
-do_test 1
+ gdb_test "continue" \
+ ".*is executing new program.*Breakpoint 1, main.* at .*" \
+ "continue over exec"
+ }
+}
+
+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
+ }
+}