+2016-06-21 Pedro Alves <palves@redhat.com>
+
+ * breakpoint.c (watchpoint_check): Send watchpoint-deleted output
+ to all UIs.
+
2016-06-21 Pedro Alves <palves@redhat.com>
* NEWS: Mention support for running interpreters on separate
}
else
{
- struct ui_out *uiout = current_uiout;
+ struct switch_thru_all_uis state;
/* This seems like the only logical thing to do because
if we temporarily ignored the watchpoint, then when
call breakpoint_ops->print_it this bp will be deleted
already. So we have no choice but print the information
here. */
- if (ui_out_is_mi_like_p (uiout))
- ui_out_field_string
- (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
- ui_out_text (uiout, "\nWatchpoint ");
- ui_out_field_int (uiout, "wpnum", b->base.number);
- ui_out_text (uiout,
- " deleted because the program has left the block in\n\
-which its expression is valid.\n");
+
+ SWITCH_THRU_ALL_UIS (state)
+ {
+ struct ui_out *uiout = current_uiout;
+
+ if (ui_out_is_mi_like_p (uiout))
+ ui_out_field_string
+ (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
+ ui_out_text (uiout, "\nWatchpoint ");
+ ui_out_field_int (uiout, "wpnum", b->base.number);
+ ui_out_text (uiout,
+ " deleted because the program has left the block in\n"
+ "which its expression is valid.\n");
+ }
/* Make sure the watchpoint's commands aren't executed. */
decref_counted_command_line (&b->base.commands);
/* Can't happen. */
case 0:
/* Error from catch_errors. */
- printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
- watchpoint_del_at_next_stop (b);
- /* We've already printed what needs to be printed. */
- bs->print_it = print_it_done;
+ {
+ struct switch_thru_all_uis state;
+
+ SWITCH_THRU_ALL_UIS (state)
+ {
+ printf_filtered (_("Watchpoint %d deleted.\n"),
+ b->base.number);
+ }
+ watchpoint_del_at_next_stop (b);
+ /* We've already printed what needs to be printed. */
+ bs->print_it = print_it_done;
+ }
break;
}
}
+2016-06-21 Pedro Alves <palves@redhat.com>
+
+ * gdb.mi/mi-watch.exp (test_watchpoint_creation_and_listing)
+ (test_awatch_creation_and_listing)
+ (test_rwatch_creation_and_listing, test_watchpoint_triggering):
+ Remove 'type' parameter.
+ (test_watchpoint_all): New parameter mi_mode. Remove
+ with_test_prefix.
+ (top level): Use foreach_with_prefix, and add main/separate UI MI
+ testing axis.
+
2016-06-21 Pedro Alves <palves@redhat.com>
* README (Testsuite Parameters): Document FORCE_SEPARATE_MI_TTY.
set MIFLAGS "-i=mi"
gdb_exit
-if [mi_gdb_start] {
- continue
-}
standard_testfile basics.c
return -1
}
-proc test_watchpoint_creation_and_listing {type} {
+proc test_watchpoint_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
}
# UNUSED at the time
-proc test_awatch_creation_and_listing {type} {
+proc test_awatch_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
}
# UNUSED at the time
-proc test_rwatch_creation_and_listing {type} {
+proc test_rwatch_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
"delete read watchpoint"
}
-proc test_watchpoint_triggering {type} {
+proc test_watchpoint_triggering {} {
global mi_gdb_prompt
global hex fullname_syntax srcfile
"watchpoint trigger"
}
-proc test_watchpoint_all {type} {
- with_test_prefix "$type" {
- upvar srcdir srcdir
- upvar subdir subdir
- upvar binfile binfile
-
- mi_delete_breakpoints
- mi_gdb_reinitialize_dir $srcdir/$subdir
- mi_gdb_load ${binfile}
-
- mi_runto callee4
- test_watchpoint_creation_and_listing $type
- #test_rwatch_creation_and_listing $type
- #test_awatch_creation_and_listing $type
- test_watchpoint_triggering $type
+proc test_watchpoint_all {mi_mode type} {
+ upvar srcdir srcdir
+ upvar subdir subdir
+ upvar binfile binfile
+
+ if {$type == "hw" && [target_info exists gdb,no_hardware_watchpoints] } {
+ return
}
-}
-# Run the tests twice, once using software watchpoints...
-mi_gdb_test "567-gdb-set can-use-hw-watchpoints 0" \
- "567\\^done" \
- "hw watchpoints toggle (1)"
-test_watchpoint_all sw
+ mi_gdb_exit
-mi_gdb_exit
+ if {$mi_mode == "separate"} {
+ set start_ops "separate-mi-tty"
+ } else {
+ set start_ops ""
+ }
+ if [mi_gdb_start $start_ops] {
+ return
+ }
-# ... and unless requested otherwise...
-if [target_info exists gdb,no_hardware_watchpoints] {
- return 0
-}
+ if {$type == "sw"} {
+ set option 0
+ } else {
+ set option 1
+ }
+ mi_gdb_test "567-gdb-set can-use-hw-watchpoints $option" \
+ "567\\^done" \
+ "hw watchpoints toggle"
-mi_gdb_start
+ mi_delete_breakpoints
+ mi_gdb_reinitialize_dir $srcdir/$subdir
+ mi_gdb_load ${binfile}
-# ... once using hardware watchpoints (if available).
-mi_gdb_test "890-gdb-set can-use-hw-watchpoints 1" \
- "890\\^done" \
- "hw watchpoints toggle (2)"
-test_watchpoint_all hw
+ mi_runto callee4
+ test_watchpoint_creation_and_listing
+ #test_rwatch_creation_and_listing
+ #test_awatch_creation_and_listing
+ test_watchpoint_triggering
+}
-mi_gdb_exit
-return 0
+# Run the tests twice, once using software watchpoints, and another
+# with hardware watchpoints.
+foreach_with_prefix mi-mode {"main" "separate"} {
+ foreach_with_prefix wp-type {"sw" "hw"} {
+ test_watchpoint_all ${mi-mode} ${wp-type}
+ }
+}