From: Pedro Alves <palves@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH v3 32/34] Send deleted watchpoint-scope output to all UIs
Date: Fri, 06 May 2016 12:45:00 -0000 [thread overview]
Message-ID: <1462538104-19109-33-git-send-email-palves@redhat.com> (raw)
In-Reply-To: <1462538104-19109-1-git-send-email-palves@redhat.com>
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:
yyyy-mm-dd Pedro Alves <palves@redhat.com>
* breakpoint.c (watchpoint_check): Send watchpoint-deleted output
to all UIs.
gdb/testsuite/ChangeLog:
yyyy-mm-dd 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.
---
gdb/breakpoint.c | 40 ++++++++++++------
gdb/testsuite/gdb.mi/mi-watch.exp | 85 ++++++++++++++++++++-------------------
2 files changed, 71 insertions(+), 54 deletions(-)
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index d181597..b2da81b 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -5240,7 +5240,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
@@ -5255,14 +5255,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);
@@ -5430,10 +5436,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;
}
}
diff --git a/gdb/testsuite/gdb.mi/mi-watch.exp b/gdb/testsuite/gdb.mi/mi-watch.exp
index f4b54bb..29fc471 100644
--- a/gdb/testsuite/gdb.mi/mi-watch.exp
+++ b/gdb/testsuite/gdb.mi/mi-watch.exp
@@ -24,9 +24,6 @@ load_lib mi-support.exp
set MIFLAGS "-i=mi"
gdb_exit
-if [mi_gdb_start] {
- continue
-}
standard_testfile basics.c
@@ -35,7 +32,7 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
return -1
}
-proc test_watchpoint_creation_and_listing {type} {
+proc test_watchpoint_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
global hex
@@ -59,7 +56,7 @@ proc test_watchpoint_creation_and_listing {type} {
}
# 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
@@ -86,7 +83,7 @@ proc test_awatch_creation_and_listing {type} {
}
# 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
@@ -112,7 +109,7 @@ proc test_rwatch_creation_and_listing {type} {
"delete read watchpoint"
}
-proc test_watchpoint_triggering {type} {
+proc test_watchpoint_triggering {} {
global mi_gdb_prompt
global hex fullname_syntax srcfile
@@ -137,44 +134,50 @@ proc test_watchpoint_triggering {type} {
"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}
+ }
+}
--
2.5.5
next prev parent reply other threads:[~2016-05-06 12:45 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-06 12:35 [PATCH v3 00/34] Towards great frontend GDB consoles Pedro Alves
2016-05-06 12:35 ` [PATCH v3 01/34] Prepare gdb.python/mi-py-events.exp for Python/MI in separate channels Pedro Alves
2016-05-06 12:35 ` [PATCH v3 24/34] Push thread->control.command_interp to the struct thread_fsm Pedro Alves
2016-07-01 11:02 ` Thomas Preudhomme
[not found] ` <20144b4c-11ee-fc84-e3ad-b9992f14ce15@redhat.com>
2016-07-01 15:24 ` [PATCH] Build gdb.opt/inline-*.exp tests at -O0, rely on __attribute__((always_inline)) (was: Re: [PATCH v3 24/34] Push thread->control.command_interp to the struct thread_fsm) Thomas Preudhomme
2016-07-15 12:05 ` Thomas Preudhomme
2016-07-19 17:02 ` [PATCH] Build gdb.opt/inline-*.exp tests at -O0, rely on __attribute__((always_inline)) Pedro Alves
2016-07-20 16:35 ` Thomas Preudhomme
2016-05-06 12:35 ` [PATCH v3 29/34] Add new command to create extra console/mi UI channels Pedro Alves
2016-05-26 18:34 ` Pedro Alves
2016-05-06 12:35 ` [PATCH v3 03/34] Introduce "struct ui" Pedro Alves
2016-05-06 12:35 ` [PATCH v3 16/34] Make target_terminal_inferior/ours almost nops on non-main UIs Pedro Alves
2016-05-06 12:35 ` [PATCH v3 15/34] Always process target events in the main UI Pedro Alves
2016-05-06 12:35 ` [PATCH v3 20/34] Make gdb_in_secondary_prompt_p() be per UI Pedro Alves
2016-05-06 12:35 ` [PATCH v3 33/34] Make mi-break.exp always expect breakpoint commands output on the main UI Pedro Alves
2016-05-06 12:35 ` [PATCH v3 02/34] [Ada catchpoints] Fix "warning: failed to get exception name: No definition of \"e.full_name\" in current context" Pedro Alves
2016-05-06 12:35 ` [PATCH v3 14/34] Make command line editing (use of readline) be per UI Pedro Alves
2016-05-06 12:35 ` [PATCH v3 21/34] Replace the sync_execution global with a new enum prompt_state tristate Pedro Alves
2016-05-06 12:36 ` [PATCH v3 31/34] Add testing infrastruture bits for running with MI on a separate UI Pedro Alves
2016-06-28 20:19 ` Simon Marchi
2016-06-29 10:50 ` Pedro Alves
2016-06-30 11:12 ` [pushed] Fix gdbserver/MI testing regression (was: Re: [PATCH v3 31/34] Add testing infrastruture bits for running with MI on a separate UI) Pedro Alves
2016-06-30 12:10 ` gdbserver/ada testing broken (was: Re: [pushed] Fix gdbserver/MI testing regression) Pedro Alves
2016-07-04 20:40 ` gdbserver/ada testing broken Simon Marchi
2016-07-05 15:28 ` Joel Brobecker
2016-07-05 15:47 ` Joel Brobecker
2016-07-05 16:36 ` gdbserver/ada testing broken (was: Re: [pushed] Fix gdbserver/MI testing regression) Joel Brobecker
2016-07-05 17:19 ` gdbserver/ada testing broken Simon Marchi
2016-07-06 13:23 ` Joel Brobecker
2016-07-06 14:28 ` Simon Marchi
2016-07-19 17:11 ` Pedro Alves
2016-07-04 17:22 ` [pushed] Fix gdbserver/MI testing regression Simon Marchi
2016-05-06 12:40 ` [PATCH v3 13/34] Make current_ui_out be per UI Pedro Alves
2016-05-06 12:40 ` [PATCH v3 23/34] New function should_print_stop_to_console Pedro Alves
2016-05-06 12:40 ` [PATCH v3 11/34] Make out and error streams be per UI Pedro Alves
2016-05-06 12:41 ` [PATCH v3 06/34] Introduce interpreter factories Pedro Alves
2016-05-18 19:18 ` Simon Marchi
2016-05-26 18:11 ` Pedro Alves
2016-05-18 19:20 ` Simon Marchi
2016-05-26 18:08 ` Pedro Alves
2016-05-06 12:42 ` [PATCH v3 30/34] [DOC] Document support for running interpreters on separate UI channels Pedro Alves
2016-05-06 13:04 ` Eli Zaretskii
2016-05-26 11:11 ` Pedro Alves
2016-06-17 17:24 ` Pedro Alves
2016-06-17 20:02 ` Eli Zaretskii
2016-05-06 12:43 ` [PATCH v3 05/34] Make the interpreters be per UI Pedro Alves
2016-05-18 17:51 ` Simon Marchi
2016-05-26 18:08 ` Pedro Alves
2016-05-06 12:43 ` [PATCH v3 10/34] Make input_fd " Pedro Alves
2016-05-06 12:43 ` [PATCH v3 12/34] Delete def_uiout Pedro Alves
2016-05-06 12:43 ` [PATCH v3 04/34] Make gdb_stdout&co be per UI Pedro Alves
2016-05-06 12:43 ` [PATCH v3 17/34] Introduce display_mi_prompt Pedro Alves
2016-05-06 12:43 ` [PATCH v3 28/34] Make stdin be per UI Pedro Alves
2016-05-06 12:43 ` [PATCH v3 07/34] Make the intepreters output to all UIs Pedro Alves
2016-05-19 15:16 ` Simon Marchi
2016-05-26 18:12 ` Pedro Alves
2016-05-06 12:43 ` [PATCH v3 25/34] Only send sync execution command output to the UI that ran the command Pedro Alves
2016-05-06 12:43 ` [PATCH v3 08/34] Always run async signal handlers in the main UI Pedro Alves
2016-05-19 19:28 ` Simon Marchi
2016-05-26 18:13 ` Pedro Alves
2016-05-26 18:15 ` Simon Marchi
2016-05-06 12:45 ` [PATCH v3 34/34] Always switch fork child to " Pedro Alves
2016-05-06 12:45 ` Pedro Alves [this message]
2016-05-06 12:45 ` [PATCH v3 22/34] Fix for spurious prompts in secondary UIs Pedro Alves
2016-05-06 12:45 ` [PATCH v3 27/34] Handle UI's terminal closing Pedro Alves
2016-05-06 12:45 ` [PATCH v3 26/34] Make main_ui be heap allocated Pedro Alves
2016-05-06 12:52 ` [PATCH v3 18/34] Make raw_stdout be per MI instance Pedro Alves
2016-05-06 12:53 ` [PATCH v3 19/34] Simplify starting the command event loop Pedro Alves
2016-05-06 12:53 ` [PATCH v3 09/34] Make instream be per UI Pedro Alves
2016-05-26 18:37 ` [PATCH v3 35/34] Add "new-ui console" tests Pedro Alves
2016-06-21 0:23 ` [pushed] Re: [PATCH v3 00/34] Towards great frontend GDB consoles Pedro Alves
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462538104-19109-33-git-send-email-palves@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox