aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-06-21 01:11:56 +0100
committerPedro Alves <palves@redhat.com>2016-06-21 01:11:56 +0100
commit468afe6c5fc9c80b8c175f3f13702ffaa6308400 (patch)
tree81b24033463a87673f235c67b153cbee86ca36a9 /gdb/breakpoint.c
parent51f77c3704a6e5c28fdcdd6d6e0aeb97ebdb343f (diff)
downloadgdb-468afe6c5fc9c80b8c175f3f13702ffaa6308400.zip
gdb-468afe6c5fc9c80b8c175f3f13702ffaa6308400.tar.gz
gdb-468afe6c5fc9c80b8c175f3f13702ffaa6308400.tar.bz2
Send deleted watchpoint-scope output to all UIs
Testing with: make check RUNTESTFLAGS="SEPARATE_MI_TTY=1" shows this, in gdb.mi/mi-watch.exp: -*stopped,reason="watchpoint-scope",wpnum="2",frame={addr="0x00000000004005cb", +*stopped,frame={addr="0x00000000004005cb", (...) -PASS: gdb.mi/mi-watch.exp: hw: watchpoint trigger +FAIL: gdb.mi/mi-watch.exp: hw: watchpoint trigger (unknown output after running) That is, we lose the "watchpoint-scope" output on the MI UI. This commit fixes it, and makes the test run with MI running as both main UI and separate UI. gdb/ChangeLog: 2016-06-21 Pedro Alves <palves@redhat.com> * breakpoint.c (watchpoint_check): Send watchpoint-deleted output to all UIs. gdb/testsuite/ChangeLog: 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.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c40
1 files changed, 27 insertions, 13 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 27ca204..93dfba6 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -5233,7 +5233,7 @@ watchpoint_check (void *p)
}
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
@@ -5248,14 +5248,20 @@ watchpoint_check (void *p)
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);
@@ -5423,10 +5429,18 @@ bpstat_check_watchpoint (bpstat bs)
/* 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;
}
}