Fix several "set remote foo-packet on/off" commands.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / dprintf.exp
index d37d4ecda8e91434de554efa138deaa281df0fff..afd3312b69bca591e2090064533a82c779b073a5 100644 (file)
@@ -1,4 +1,4 @@
-#   Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2014 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
@@ -96,15 +96,20 @@ if ![target_info exists gdb,noinferiorio] {
        "2nd dprintf, fprintf"
 }
 
+# Now test the "agent" style.
+
 set target_can_dprintf 1
-set msg "Set dprintf style to agent"
+set msg "set dprintf style to agent"
 gdb_test_multiple "set dprintf-style agent" $msg {
     -re "warning: Target cannot run dprintf commands.*\r\n$gdb_prompt $" {
+
+       # The target reports that it doesn't support target side
+       # commands at all.
        set target_can_dprintf 0
-       pass "$msg - cannot do"
+       unsupported "$msg"
     }
     -re ".*$gdb_prompt $" {
-       pass "$msg - can do"
+       pass "$msg"
     }
 }
 
@@ -113,22 +118,48 @@ if $target_can_dprintf {
 
     gdb_test "" "Breakpoint"
 
-    gdb_test "continue" "Breakpoint \[0-9\]+, foo .*" "1st dprintf, agent"
-
-    gdb_test "continue" "Breakpoint \[0-9\]+, foo .*" "2nd dprintf, agent"
+    # Even if the the target reports that it does support target side
+    # commands, we can only tell that it supports them in combination
+    # with a particular breakpoint type (Z0, Z1, etc.) when we try to
+    # insert the breakpoint.  When "set breakpoint always-inserted is
+    # off", that'll be on next continue.
+    set msg "1st dprintf, agent"
+    gdb_test_multiple "continue" $msg {
+       -re "Warning:.*Target doesn't support breakpoints that have target side commands.*\r\n$gdb_prompt $" {
+           set target_can_dprintf 0
+           unsupported "$msg"
+       }
+       -re "Breakpoint \[0-9\]+, foo .*$gdb_prompt $" {
+           pass "$msg"
+       }
+    }
 
-    gdb_test_sequence "info breakpoints" "dprintf info 2" {
-       "\[\r\n\]Num     Type           Disp Enb Address +What"
-       "\[\r\n\]2       breakpoint"
-       "\[\r\n\]\tbreakpoint already hit 2 times"
-       "\[\r\n\]3       dprintf"
-       "\[\r\n\]\tbreakpoint already hit 2 times"
-       "\[\r\n\]        agent-printf \"At foo entry\\\\n\""
-       "\[\r\n\]4       dprintf"
-       "\[\r\n\]\tbreakpoint already hit 2 times"
-       "\[\r\n\]        agent-printf \"arg=%d, g=%d\\\\n\", arg, g"
+    if $target_can_dprintf {
+       gdb_test "continue" "Breakpoint \[0-9\]+, foo .*" "2nd dprintf, agent"
+
+       gdb_test_sequence "info breakpoints" "dprintf info 2" {
+           "\[\r\n\]Num     Type           Disp Enb Address +What"
+           "\[\r\n\]2       breakpoint"
+           "\[\r\n\]\tbreakpoint already hit 2 times"
+           "\[\r\n\]3       dprintf"
+           "\[\r\n\]\tbreakpoint already hit 2 times"
+           "\[\r\n\]        agent-printf \"At foo entry\\\\n\""
+           "\[\r\n\]4       dprintf"
+           "\[\r\n\]\tbreakpoint already hit 2 times"
+           "\[\r\n\]        agent-printf \"arg=%d, g=%d\\\\n\", arg, g"
+       }
     }
 }
 
 gdb_test "set dprintf-style foobar" "Undefined item: \"foobar\"." \
     "Set dprintf style to an unrecognized type"
+
+# Test that force-disabling the BreakpointCommands RSP feature works
+# as expected.  dprintf relies on support for target-side breakpoint
+# commands --- use it as proxy.
+if [gdb_is_target_remote] {
+    gdb_test_no_output "set remote breakpoint-commands-packet off"
+    gdb_test "set dprintf-style agent" \
+       "warning: Target cannot run dprintf commands.*" \
+       "set dprintf-style agent, with feature disabled"
+}
This page took 0.026011 seconds and 4 git commands to generate.