Emit inferior, thread and frame selection events to all UIs
[deliverable/binutils-gdb.git] / gdb / inferior.c
index 8f9ac3358b2b52b43723a90de1ce292297a4edf0..277b988a81e373c9d522e479ffc5d5b746f76b06 100644 (file)
@@ -249,8 +249,6 @@ exit_inferior_1 (struct inferior *inftoex, int silent)
 
   iterate_over_threads (delete_thread_of_inferior, &arg);
 
-  /* Notify the observers before removing the inferior from the list,
-     so that the observers have a chance to look it up.  */
   observer_notify_inferior_exit (inf);
 
   inf->pid = 0;
@@ -550,6 +548,24 @@ inferior_pid_to_str (int pid)
     return _("<null>");
 }
 
+/* See inferior.h.  */
+
+void
+print_selected_inferior (struct ui_out *uiout)
+{
+  char buf[PATH_MAX + 256];
+  struct inferior *inf = current_inferior ();
+
+  xsnprintf (buf, sizeof (buf),
+            _("[Switching to inferior %d [%s] (%s)]\n"),
+            inf->num,
+            inferior_pid_to_str (inf->pid),
+            (inf->pspace->pspace_exec_filename != NULL
+             ? inf->pspace->pspace_exec_filename
+             : _("<noexec>")));
+  ui_out_text (uiout, buf);
+}
+
 /* Prints the list of inferiors and their details on UIOUT.  This is a
    version of 'info_inferior_command' suitable for use from MI.
 
@@ -728,13 +744,6 @@ inferior_command (char *args, int from_tty)
   if (inf == NULL)
     error (_("Inferior ID %d not known."), num);
 
-  printf_filtered (_("[Switching to inferior %d [%s] (%s)]\n"),
-                  inf->num,
-                  inferior_pid_to_str (inf->pid),
-                  (inf->pspace->pspace_exec_filename != NULL
-                   ? inf->pspace->pspace_exec_filename
-                   : _("<noexec>")));
-
   if (inf->pid != 0)
     {
       if (inf->pid != ptid_get_pid (inferior_ptid))
@@ -748,9 +757,10 @@ inferior_command (char *args, int from_tty)
          switch_to_thread (tp->ptid);
        }
 
-      printf_filtered (_("[Switching to thread %d (%s)] "),
-                      pid_to_thread_id (inferior_ptid),
-                      target_pid_to_str (inferior_ptid));
+      observer_notify_user_selected_context_changed
+       (USER_SELECTED_INFERIOR
+        | USER_SELECTED_THREAD
+        | USER_SELECTED_FRAME);
     }
   else
     {
@@ -760,14 +770,8 @@ inferior_command (char *args, int from_tty)
       set_current_inferior (inf);
       switch_to_thread (null_ptid);
       set_current_program_space (inf->pspace);
-    }
 
-  if (inf->pid != 0 && is_running (inferior_ptid))
-    ui_out_text (current_uiout, "(running)\n");
-  else if (inf->pid != 0)
-    {
-      ui_out_text (current_uiout, "\n");
-      print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
+      observer_notify_user_selected_context_changed (USER_SELECTED_INFERIOR);
     }
 }
 
@@ -805,7 +809,7 @@ remove_inferior_command (char *args, int from_tty)
 
       if (inf == current_inferior ())
        {
-         warning (_("Can not remove current symbol inferior %d."), num);
+         warning (_("Can not remove current inferior %d."), num);
          continue;
        }
     
This page took 0.025211 seconds and 4 git commands to generate.