From eaae60fd9421cd055c88584bf783942888b8c68e Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 21 Jun 2016 01:11:53 +0100 Subject: [PATCH] Only send sync execution command output to the UI that ran the command Currently when a "step", "next", etc. finishes, the current source line is printed on all console UIs. This patch makes the CLI and TUI interpreters reuse MI's logic to only emit console output related to a synchronous command on the console-like interpreter that started the command in the first place. gdb/ChangeLog: 2016-06-21 Pedro Alves * cli/cli-interp.c (cli_on_normal_stop): Bail out early if there's nothing to print. Use should_print_stop_to_console. * tui/tui-interp.c (tui_on_normal_stop): Likewise. --- gdb/ChangeLog | 6 ++++++ gdb/cli/cli-interp.c | 10 ++++++++-- gdb/tui/tui-interp.c | 11 +++++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cf50f9dd688..cd147a6d7e7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-06-21 Pedro Alves + + * cli/cli-interp.c (cli_on_normal_stop): Bail out early if there's + nothing to print. Use should_print_stop_to_console. + * tui/tui-interp.c (tui_on_normal_stop): Likewise. + 2016-06-21 Pedro Alves * breakpoint.c (new_until_break_fsm): Add 'cmd_interp' parameter. diff --git a/gdb/cli/cli-interp.c b/gdb/cli/cli-interp.c index 97fd713ccd3..5d67ba4d8b7 100644 --- a/gdb/cli/cli-interp.c +++ b/gdb/cli/cli-interp.c @@ -95,14 +95,20 @@ cli_on_normal_stop (struct bpstats *bs, int print_frame) { struct switch_thru_all_uis state; + if (!print_frame) + return; + SWITCH_THRU_ALL_UIS (state) { - struct cli_interp *cli = as_cli_interp (top_level_interpreter ()); + struct interp *interp = top_level_interpreter (); + struct cli_interp *cli = as_cli_interp (interp); + struct thread_info *thread; if (cli == NULL) continue; - if (print_frame) + thread = inferior_thread (); + if (should_print_stop_to_console (interp, thread)) print_stop_event (cli->cli_uiout); } } diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c index 4996db96a57..38563820322 100644 --- a/gdb/tui/tui-interp.c +++ b/gdb/tui/tui-interp.c @@ -32,6 +32,7 @@ #include "tui/tui-io.h" #include "infrun.h" #include "observer.h" +#include "gdbthread.h" static struct ui_out *tui_ui_out (struct interp *self); @@ -71,14 +72,20 @@ tui_on_normal_stop (struct bpstats *bs, int print_frame) { struct switch_thru_all_uis state; + if (!print_frame) + return; + SWITCH_THRU_ALL_UIS (state) { - struct interp *tui = as_tui_interp (top_level_interpreter ()); + struct interp *interp = top_level_interpreter (); + struct interp *tui = as_tui_interp (interp); + struct thread_info *thread; if (tui == NULL) continue; - if (print_frame) + thread = inferior_thread (); + if (should_print_stop_to_console (interp, thread)) print_stop_event (tui_ui_out (tui)); } } -- 2.30.2