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 644f5ac..8217403 100644 (file)
@@ -1,5 +1,10 @@
 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
        * gdb.base/sss-bp-on-user-bp-2.c: New file.
        * gdb.base/sss-bp-on-user-bp-2.exp: New file.
index a129bb7..b41f86e 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 .*"