return -1
}
-# Make sure we're disconnected, in case we're testing with an
-# extended-remote board, therefore already connected.
-gdb_test "disconnect" ".*"
+# Run the tests with different features of GDBserver disabled.
+proc run_test { disable_feature } {
+ global binfile gdb_prompt decimal
-# Start GDBserver, with ";thread:NNN" in T stop replies disabled,
-# emulating old gdbservers when debugging single-threaded programs.
-set res [gdbserver_start "--disable-packet=Tthread" $binfile]
-set gdbserver_protocol [lindex $res 0]
-set gdbserver_gdbport [lindex $res 1]
+ clean_restart ${binfile}
-# Disable XML-based thread listing, and multi-process extensions.
-gdb_test_no_output "set remote threads-packet off"
-gdb_test_no_output "set remote multiprocess-feature-packet off"
+ # Make sure we're disconnected, in case we're testing with an
+ # extended-remote board, therefore already connected.
+ gdb_test "disconnect" ".*"
-set res [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
-if ![gdb_assert {$res == 0} "connect"] {
- return
-}
+ set res [gdbserver_start "--disable-packet=${disable_feature}" $binfile]
+ set gdbserver_protocol [lindex $res 0]
+ set gdbserver_gdbport [lindex $res 1]
-# There should be only one thread listed.
-set test "info threads"
-gdb_test_multiple $test $test {
- -re "2 Thread.*$gdb_prompt $" {
- fail $test
- }
- -re "has terminated.*$gdb_prompt $" {
- fail $test
+ # Disable XML-based thread listing, and multi-process extensions.
+ gdb_test_no_output "set remote threads-packet off"
+ gdb_test_no_output "set remote multiprocess-feature-packet off"
+
+ set res [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
+ if ![gdb_assert {$res == 0} "connect"] {
+ return
}
- -re "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n$gdb_prompt $" {
- pass $test
+
+ # There should be only one thread listed.
+ set test "info threads"
+ gdb_test_multiple $test $test {
+ -re "2 Thread.*$gdb_prompt $" {
+ fail $test
+ }
+ -re "has terminated.*$gdb_prompt $" {
+ fail $test
+ }
+ -re "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n$gdb_prompt $" {
+ pass $test
+ }
}
-}
-gdb_breakpoint "main"
+ gdb_breakpoint "main"
-# Bad GDB behaved like this:
-# (gdb) c
-# Cannot execute this command without a live selected thread.
-# (gdb)
-gdb_test "c" "Breakpoint $decimal, main.*" "continue to main"
+ # Bad GDB behaved like this:
+ # (gdb) c
+ # Cannot execute this command without a live selected thread.
+ # (gdb)
+ gdb_test "c" "Breakpoint $decimal, main.*" "continue to main"
+}
+
+# Disable different features within gdbserver:
+#
+# Tthread: Start GDBserver, with ";thread:NNN" in T stop replies disabled,
+# emulating old gdbservers when debugging single-threaded programs.
+#
+# T: Start GDBserver with the entire 'T' stop reply packet disabled,
+# GDBserver will instead send the 'S' stop reply.
+foreach_with_prefix to_disable { Tthread T } {
+ run_test $to_disable
+}