Only send sync execution command output to the UI that ran the command
authorPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:53 +0000 (01:11 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:53 +0000 (01:11 +0100)
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  <palves@redhat.com>

* 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
gdb/cli/cli-interp.c
gdb/tui/tui-interp.c

index cf50f9d..cd147a6 100644 (file)
@@ -1,5 +1,11 @@
 2016-06-21  Pedro Alves  <palves@redhat.com>
 
+       * 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  <palves@redhat.com>
+
        * breakpoint.c (new_until_break_fsm): Add 'cmd_interp' parameter.
        (until_break_fsm_should_stop, until_break_fsm_clean_up): Add
        thread parameter.
index 97fd713..5d67ba4 100644 (file)
@@ -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);
     }
 }
index 4996db9..3856382 100644 (file)
@@ -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));
     }
 }