Skip sss-bp-on-user-bp-2.exp on remote hardware step targets.
authorPedro Alves <palves@redhat.com>
Tue, 3 Jun 2014 13:04:48 +0000 (14:04 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 3 Jun 2014 13:04:48 +0000 (14:04 +0100)
gdb/testsuite/
2014-06-03  Pedro Alves  <palves@redhat.com>

* gdb.base/sss-bp-on-user-bp-2.exp: Skip if testing with a remote
target that doesn't use software single-stepping.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp

index 644f5ac9117b42f9c08a2a8732cd59b4540a26b8..821740349f100fd5f994ada3fb76b9b33e8169de 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-03  Pedro Alves  <palves@redhat.com>
+
+       * gdb.base/sss-bp-on-user-bp-2.exp: Skip if testing with a remote
+       target that doesn't use software single-stepping.
+
 2014-06-03  Pedro Alves  <palves@redhat.com>
 
        PR breakpoints/17000
index a129bb7b38d9b98516fad625e191058a58367bee..b41f86e2b2049d3d4ff74571bb81c3ad534dd79c 100644 (file)
@@ -42,6 +42,45 @@ if ![runto_main] {
     return 0
 }
 
+delete_breakpoints
+
+# With the all-stop RSP, we can't talk to the target while it's
+# running, until we get back the stop reply.  If not using single-step
+# breakpoints, then the "del" in stepi_del_break below will try to
+# delete the user breakpoint from the target, which will fail, with
+# "Cannot execute this command while the target is running.".  On
+# software single-step targets, that del shouldn't trigger any RSP
+# traffic.  Just skip the test if testing against a remove target and
+# not using software single-stepping.  IOW, skip the test if we see a
+# 'vCont;s' or 's' in the RSP traffic.
+
+gdb_test_no_output "set debug remote 1"
+
+set rsp_hardware_step 0
+
+# Probe for software single-step breakpoint use.
+set test "probe RSP hardware step"
+gdb_test_multiple "si" $test {
+    -re "\\\$vCont;s.*$gdb_prompt $" {
+       set rsp_hardware_step 1
+       pass $test
+    }
+    -re "\\\$s#.*$gdb_prompt $" {
+       set rsp_hardware_step 1
+       pass $test
+    }
+    -re "$gdb_prompt $" {
+       pass $test
+    }
+}
+
+if { $rsp_hardware_step } {
+    unsupported "remote target doesn't use software single-stepping"
+    return
+}
+
+gdb_test_no_output "set debug remote 0"
+
 set line_re "\[^\r\n\]*"
 
 gdb_test "b test:label" "Breakpoint .*"