-# 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
"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"
}
}
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"
+}