Make variable in get_startup_shell non-static
[deliverable/binutils-gdb.git] / gdb / annotate.c
index ccba5fe67a1e0bfdcc595eaa576df375256ddbc9..495aa2dba68d2d851ab45ff156809fddccf35ffd 100644 (file)
@@ -1,5 +1,5 @@
 /* Annotation routines for GDB.
-   Copyright (C) 1986-2013 Free Software Foundation, Inc.
+   Copyright (C) 1986-2018 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "target.h"
 #include "gdbtypes.h"
 #include "breakpoint.h"
-#include "observer.h"
+#include "observable.h"
 #include "inferior.h"
+#include "infrun.h"
+#include "top.h"
 \f
 
 /* Prototypes for local functions.  */
 
-extern void _initialize_annotate (void);
-
 static void print_value_flags (struct type *);
 
 static void breakpoint_changed (struct breakpoint *b);
@@ -45,16 +45,6 @@ void (*deprecated_annotate_signal_hook) (void);
 static int frames_invalid_emitted;
 static int breakpoints_invalid_emitted;
 
-/* True if the target can async, and a synchronous execution command
-   is not in progress.  If true, input is accepted, so don't suppress
-   annotations.  */
-
-static int
-async_background_execution_p (void)
-{
-  return (target_can_async_p () && !sync_execution);
-}
-
 static void
 print_value_flags (struct type *t)
 {
@@ -69,10 +59,19 @@ annotate_breakpoints_invalid (void)
 {
   if (annotation_level == 2
       && (!breakpoints_invalid_emitted
-         || async_background_execution_p ()))
+         || current_ui->prompt_state != PROMPT_BLOCKED))
     {
-      target_terminal_ours ();
+      /* If the inferior owns the terminal (e.g., we're resuming),
+        make sure to leave with the inferior still owning it.  */
+      int was_inferior = target_terminal::is_inferior ();
+
+      target_terminal::ours_for_output ();
+
       printf_unfiltered (("\n\032\032breakpoints-invalid\n"));
+
+      if (was_inferior)
+       target_terminal::inferior ();
+
       breakpoints_invalid_emitted = 1;
     }
 }
@@ -207,10 +206,19 @@ annotate_frames_invalid (void)
 {
   if (annotation_level == 2
       && (!frames_invalid_emitted
-         || async_background_execution_p ()))
+         || current_ui->prompt_state != PROMPT_BLOCKED))
     {
-      target_terminal_ours ();
+      /* If the inferior owns the terminal (e.g., we're resuming),
+        make sure to leave with the inferior still owning it.  */
+      int was_inferior = target_terminal::is_inferior ();
+
+      target_terminal::ours_for_output ();
+
       printf_unfiltered (("\n\032\032frames-invalid\n"));
+
+      if (was_inferior)
+       target_terminal::inferior ();
+
       frames_invalid_emitted = 1;
     }
 }
@@ -584,7 +592,7 @@ breakpoint_changed (struct breakpoint *b)
 void
 _initialize_annotate (void)
 {
-  observer_attach_breakpoint_created (breakpoint_changed);
-  observer_attach_breakpoint_deleted (breakpoint_changed);
-  observer_attach_breakpoint_modified (breakpoint_changed);
+  gdb::observers::breakpoint_created.attach (breakpoint_changed);
+  gdb::observers::breakpoint_deleted.attach (breakpoint_changed);
+  gdb::observers::breakpoint_modified.attach (breakpoint_changed);
 }
This page took 0.035679 seconds and 4 git commands to generate.