-# Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
# the main thread doesn't just silently stop at the first internal
# breakpoint (usually the _dl_debug_state breakpoint).
-# No exec event support in the remote protocol.
-if { [is_remote target] } then {
- continue
+if { ![support_displaced_stepping] } {
+ unsupported "displaced stepping"
+ return -1
}
load_lib mi-support.exp
set MIFLAGS "-i=mi"
-gdb_exit
-if {[mi_gdb_start]} {
- continue
-}
-
#
# Start here
#
-set testfile "nsthrexec"
-set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/mi-$testfile"
+standard_testfile nsthrexec.c
-set options [list debug incdir=$objdir]
+set options [list debug]
if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
return -1
}
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load $binfile
-
-set supported 0
-gdb_test_multiple "-gdb-show non-stop" "" {
- -re ".*\\^done,value=\"off\",supported=\"(\[^\"\]+)\"\r\n$mi_gdb_prompt$" {
- if { $expect_out(1,string) == "1" } {
- set supported 1
- }
- }
- -re ".*$mi_gdb_prompt$" {
- }
+save_vars { GDBFLAGS } {
+ append GDBFLAGS " -ex \"set non-stop on\""
+ mi_clean_restart $binfile
}
-mi_gdb_test "-gdb-set non-stop 1" ".*"
-mi_gdb_test "-gdb-set target-async 1" ".*"
-detect_async
+mi_gdb_test "-gdb-set mi-async 1" ".*"
+mi_detect_async
-if { [mi_run_to_main] < 0 } {
+if { [mi_runto_main] < 0 } {
continue
}
-mi_create_breakpoint thread_execler 2 keep thread_execler .* .* .* \
- "breakpoint at thread_execler"
+mi_create_breakpoint thread_execler \
+ "breakpoint at thread_execler" \
+ -number 2 -function thread_execler
# All threads should stop, except the main thread.
mi_send_resuming_command "exec-continue --all" "resume all"
# now that we know about all the threads, we can get rid of the breakpoints
mi_delete_breakpoints
-mi_create_breakpoint main 3 keep main .* .* .* \
- "breakpoint at main"
+mi_create_breakpoint main \
+ "breakpoint at main" \
+ -number 3 -func main
+
# Now resume the execler thread. Eventually, it execs.
mi_send_resuming_command "exec-continue --thread 2" "resume execler thread"