diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp
index 8123a99..e35236a 100644
--- a/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp
+++ b/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp
@@ -28,13 +28,19 @@ 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 mode } {
+    with_test_prefix "lock-sched$lock_sched,$mode" {
 	global executable
 
 	clean_restart ${executable}
 
+	if { $mode == "non-stop" } {
+	    gdb_test_no_output "set target-async on" "set async mode"
+	    gdb_test_no_output "set non-stop on" "set non-stop mode"
+	}
+
 	if ![runto_main] {
+	    untested "could not run to main"
 	    return -1
 	}
 
@@ -48,11 +54,17 @@ proc do_test { lock_sched } {
 	    gdb_test_no_output "set scheduler-locking on"
 	}
 
+	if { $mode == "non-stop" } {
+	    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
+do_test 0 "all-stop"
+do_test 1 "all-stop"
+do_test 0 "non-stop"
+do_test 1 "non-stop"
diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
index 857e7bc..a0281d6 100644
--- a/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
+++ b/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
@@ -29,18 +29,42 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab
     return -1
 }
 
-proc do_test { lock_sched } {
-    with_test_prefix "lock-sched$lock_sched" {
+# Test for breakpoint event among async thread events.
+# gdb_continue_to_breakpoint requires "$gdb_prompt $", but
+# here we may get a thread event message instead of EOL.
+proc gdb_continue_to_breakpoint_async { name pattern } {
+    global gdb_prompt
+
+    gdb_test_multiple "continue" $name {
+	-re ".*Breakpoint .* (at|in) ($pattern)$gdb_prompt " {
+	    pass $name
+	}
+    }
+}
+
+proc do_test { lock_sched mode } {
+    with_test_prefix "lock-sched$lock_sched,$mode" {
 	global executable
 
 	clean_restart ${executable}
 
+	if { $mode == "non-stop" } {
+	    gdb_test_no_output "set target-async on" "set async mode"
+	    gdb_test_no_output "set non-stop on" "set non-stop mode"
+	}
+
 	if ![runto_main] {
+	    untested "could not run to main"
 	    return -1
 	}
 
 	gdb_breakpoint [gdb_get_line_number "break-here"]
-	gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+	if { $mode == "non-stop" } {
+	    gdb_continue_to_breakpoint_async "break-here" ".* break-here .*"
+	    gdb_test "thread 2" "Switching.*"
+	} else {
+	    gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+	}
 
 	gdb_test "info threads" \
 	    "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*" \
@@ -59,5 +83,7 @@ proc do_test { lock_sched } {
     }
 }
 
-do_test 0
-do_test 1
+do_test 0 "all-stop"
+do_test 1 "all-stop"
+do_test 0 "non-stop"
+do_test 1 "non-stop"
diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp
index 7f33d39..69c27d8 100644
--- a/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp
+++ b/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp
@@ -31,18 +31,42 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab
     return -1
 }
 
-proc do_test { lock_sched } {
-    with_test_prefix "lock-sched$lock_sched" {
+# Test for breakpoint event among async thread events.
+# gdb_continue_to_breakpoint requires "$gdb_prompt $", but
+# here we may get a thread event message instead of EOL.
+proc gdb_continue_to_breakpoint_async { name pattern } {
+    global gdb_prompt
+
+    gdb_test_multiple "continue" $name {
+	-re ".*Breakpoint .* (at|in) ($pattern)$gdb_prompt " {
+	    pass $name
+	}
+    }
+}
+
+proc do_test { lock_sched mode } {
+    with_test_prefix "lock-sched$lock_sched,$mode" {
 	global executable
 
 	clean_restart ${executable}
 
+	if { $mode == "non-stop" } {
+	    gdb_test_no_output "set target-async on" "set async mode"
+	    gdb_test_no_output "set non-stop on" "set non-stop mode"
+	}
+
 	if ![runto_main] {
+	    untested "could not run to main"
 	    return -1
 	}
 
 	gdb_breakpoint [gdb_get_line_number "break-here"]
-	gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+	if { $mode == "non-stop" } {
+	    gdb_continue_to_breakpoint_async "break-here" ".* break-here .*"
+	    gdb_test "thread 2" "Switching.*"
+	} else {
+	    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
@@ -57,5 +81,7 @@ proc do_test { lock_sched } {
     }
 }
 
-do_test 0
-do_test 1
+do_test 0 "all-stop"
+do_test 1 "all-stop"
+do_test 0 "non-stop"
+do_test 1 "non-stop"
diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp
index a5e88bb..f83577d 100644
--- a/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp
+++ b/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp
@@ -30,13 +30,19 @@ 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 mode } {
+    with_test_prefix "lock-sched$lock_sched,$mode" {
 	global executable
 
 	clean_restart ${executable}
 
+	if { $mode == "non-stop" } {
+	    gdb_test_no_output "set target-async on" "set async mode"
+	    gdb_test_no_output "set non-stop on" "set non-stop mode"
+	}
+
 	if ![runto_main] {
+	    untested "could not run to main"
 	    return -1
 	}
 
@@ -50,11 +56,17 @@ proc do_test { lock_sched } {
 	    gdb_test_no_output "set scheduler-locking on"
 	}
 
+	if { $mode == "non-stop" } {
+	    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
+do_test 0 "all-stop"
+do_test 1 "all-stop"
+do_test 0 "non-stop"
+do_test 1 "non-stop"
