Add "info connections" command, "info inferiors" connection number/string
[deliverable/binutils-gdb.git] / gdb / inferior.c
index d732690a3cd66ca68af5ad2b30bee3b879c8ff12..3ce43860f766d200d062ebfad6ab12eeca2f86b7 100644 (file)
@@ -428,6 +428,31 @@ print_selected_inferior (struct ui_out *uiout)
                  inf->num, inferior_pid_to_str (inf->pid).c_str (), filename);
 }
 
+/* Helper for print_inferior.  Returns the 'connection-id' string for
+   PROC_TARGET.  */
+
+static std::string
+uiout_field_connection (process_stratum_target *proc_target)
+{
+  if (proc_target == NULL)
+    {
+      return {};
+    }
+  else if (proc_target->connection_string () != NULL)
+    {
+      return string_printf ("%d (%s %s)",
+                           proc_target->connection_number,
+                           proc_target->shortname (),
+                           proc_target->connection_string ());
+    }
+  else
+    {
+      return string_printf ("%d (%s)",
+                           proc_target->connection_number,
+                           proc_target->shortname ());
+    }
+}
+
 /* Prints the list of inferiors and their details on UIOUT.  This is a
    version of 'info_inferior_command' suitable for use from MI.
 
@@ -439,6 +464,7 @@ static void
 print_inferior (struct ui_out *uiout, const char *requested_inferiors)
 {
   int inf_count = 0;
+  size_t connection_id_len = 20;
 
   /* Compute number of inferiors we will print.  */
   for (inferior *inf : all_inferiors ())
@@ -446,6 +472,10 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors)
       if (!number_is_in_list (requested_inferiors, inf->num))
        continue;
 
+      std::string conn = uiout_field_connection (inf->process_target ());
+      if (connection_id_len < conn.size ())
+       connection_id_len = conn.size ();
+
       ++inf_count;
     }
 
@@ -455,10 +485,12 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors)
       return;
     }
 
-  ui_out_emit_table table_emitter (uiout, 4, inf_count, "inferiors");
+  ui_out_emit_table table_emitter (uiout, 5, inf_count, "inferiors");
   uiout->table_header (1, ui_left, "current", "");
   uiout->table_header (4, ui_left, "number", "Num");
   uiout->table_header (17, ui_left, "target-id", "Description");
+  uiout->table_header (connection_id_len, ui_left,
+                      "connection-id", "Connection");
   uiout->table_header (17, ui_left, "exec", "Executable");
 
   uiout->table_body ();
@@ -478,6 +510,9 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors)
 
       uiout->field_string ("target-id", inferior_pid_to_str (inf->pid));
 
+      std::string conn = uiout_field_connection (inf->process_target ());
+      uiout->field_string ("connection-id", conn.c_str ());
+
       if (inf->pspace->pspace_exec_filename != NULL)
        uiout->field_string ("exec", inf->pspace->pspace_exec_filename);
       else
@@ -712,9 +747,22 @@ switch_to_inferior_and_push_target (inferior *new_inf,
 
   /* Reuse the target for new inferior.  */
   if (!no_connection && proc_target != NULL)
-    push_target (proc_target);
-
-  printf_filtered (_("Added inferior %d\n"), new_inf->num);
+    {
+      push_target (proc_target);
+      if (proc_target->connection_string () != NULL)
+       printf_filtered (_("Added inferior %d on connection %d (%s %s)\n"),
+                        new_inf->num,
+                        proc_target->connection_number,
+                        proc_target->shortname (),
+                        proc_target->connection_string ());
+      else
+       printf_filtered (_("Added inferior %d on connection %d (%s)\n"),
+                        new_inf->num,
+                        proc_target->connection_number,
+                        proc_target->shortname ());
+    }
+  else
+    printf_filtered (_("Added inferior %d\n"), new_inf->num);
 }
 
 /* add-inferior [-copies N] [-exec FILENAME] [-no-connection] */
This page took 0.024685 seconds and 4 git commands to generate.