aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/lib/gdbserver-support.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/lib/gdbserver-support.exp')
-rw-r--r--gdb/testsuite/lib/gdbserver-support.exp40
1 files changed, 27 insertions, 13 deletions
diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
index 706bbeb..a2cc80f 100644
--- a/gdb/testsuite/lib/gdbserver-support.exp
+++ b/gdb/testsuite/lib/gdbserver-support.exp
@@ -431,21 +431,11 @@ if { [info procs gdbserver_orig_gdb_exit] == "" } {
rename mi_gdb_exit gdbserver_orig_mi_gdb_exit
}
-proc gdbserver_gdb_exit { is_mi } {
+# Cleanup gdbserver $server_spawn_id
+
+proc gdbserver_exit { is_mi } {
global gdb_spawn_id server_spawn_id
global gdb_prompt
- global gdbserver_reconnect_p
-
- # Leave GDBserver running if we're exiting GDB in order to
- # reconnect to the same instance of GDBserver again.
- if {[info exists gdbserver_reconnect_p] && $gdbserver_reconnect_p} {
- if { $is_mi } {
- gdbserver_orig_mi_gdb_exit
- } else {
- gdbserver_orig_gdb_exit
- }
- return
- }
if {[info exists gdb_spawn_id] && [info exists server_spawn_id]} {
# GDB may be terminated in an expected way or an unexpected way,
@@ -469,10 +459,34 @@ proc gdbserver_gdb_exit { is_mi } {
wait -i $expect_out(spawn_id)
unset server_spawn_id
}
+ timeout {
+ warning "Timed out waiting for EOF in server after $monitor_exit"
+ }
}
}
}
close_gdbserver
+}
+
+# Local version of gdb_exit that also cleans up gdbserver $server_spawn_id.
+
+proc gdbserver_gdb_exit { is_mi } {
+ global gdb_spawn_id server_spawn_id
+ global gdb_prompt
+ global gdbserver_reconnect_p
+
+ # Leave GDBserver running if we're exiting GDB in order to
+ # reconnect to the same instance of GDBserver again.
+ if {[info exists gdbserver_reconnect_p] && $gdbserver_reconnect_p} {
+ if { $is_mi } {
+ gdbserver_orig_mi_gdb_exit
+ } else {
+ gdbserver_orig_gdb_exit
+ }
+ return
+ }
+
+ gdbserver_exit $is_mi
if { $is_mi } {
gdbserver_orig_mi_gdb_exit