2011-02-25 Michael Snyder <msnyder@vmware.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 25 Feb 2011 19:19:26 +0000 (19:19 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 25 Feb 2011 19:19:26 +0000 (19:19 +0000)
* inferior.c (print_inferior): Accept a string instead of an int
for requested_inferiors, and use get_number_or_range to parse it.
(info_inferiors_command): Pass args string to print_inferior.
(initialize_inferiors): Change help string for info inferiors.
* inferior.h (print_inferior): Export prototype change.

2011-02-25  Michael Snyder  <msnyder@vmware.com>

* gdb.multi/base.exp: Add tests for info inferiors with args.

gdb/ChangeLog
gdb/inferior.c
gdb/inferior.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.multi/base.exp

index 5b11f3aa5561e7a012e7839cc22a1980bbc879f6..eef187a2af127031578b4486e91a2de5c21e226a 100644 (file)
@@ -1,3 +1,11 @@
+2011-02-25  Michael Snyder  <msnyder@vmware.com>
+
+       * inferior.c (print_inferior): Accept a string instead of an int
+       for requested_inferiors, and use get_number_or_range to parse it.
+       (info_inferiors_command): Pass args string to print_inferior.
+       (initialize_inferiors): Change help string for info inferiors.
+       * inferior.h (print_inferior): Export prototype change.
+
 2011-02-25  Tom Tromey  <tromey@redhat.com>
 
        * common/ax.def (invalid2): Set to 0x31.
index 081849eba03bb1201654f878d4478b24ae806e2f..ebe13bf51310fcf293b45b343e6074bbfce4c600 100644 (file)
@@ -30,6 +30,7 @@
 #include "gdbcore.h"
 #include "symfile.h"
 #include "environ.h"
+#include "cli/cli-utils.h"
 
 void _initialize_inferiors (void);
 
@@ -533,10 +534,12 @@ number_of_inferiors (void)
 /* Prints the list of inferiors and their details on UIOUT.  This is a
    version of 'info_inferior_command' suitable for use from MI.
 
-   If REQUESTED_INFERIOR is not -1, it's the GDB id of the inferior that
-   should be printed.  Otherwise, all inferiors are printed.  */
-void
-print_inferior (struct ui_out *uiout, int requested_inferior)
+   If REQUESTED_INFERIORS is not NULL, it's a list of GDB ids of the
+   inferiors that should be printed.  Otherwise, all inferiors are
+   printed.  */
+
+static void
+print_inferior (struct ui_out *uiout, char *requested_inferiors)
 {
   struct inferior *inf;
   struct cleanup *old_chain;
@@ -545,7 +548,7 @@ print_inferior (struct ui_out *uiout, int requested_inferior)
   /* Compute number of inferiors we will print.  */
   for (inf = inferior_list; inf; inf = inf->next)
     {
-      if (requested_inferior != -1 && inf->num != requested_inferior)
+      if (!number_is_in_list (requested_inferiors, inf->num))
        continue;
 
       ++inf_count;
@@ -569,7 +572,7 @@ print_inferior (struct ui_out *uiout, int requested_inferior)
     {
       struct cleanup *chain2;
 
-      if (requested_inferior != -1 && inf->num != requested_inferior)
+      if (!number_is_in_list (requested_inferiors, inf->num))
        continue;
 
       chain2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
@@ -726,16 +729,7 @@ inferior_command (char *args, int from_tty)
 static void
 info_inferiors_command (char *args, int from_tty)
 {
-  int requested = -1;
-
-  if (args && *args)
-    {
-      requested = parse_and_eval_long (args);
-      if (!valid_gdb_inferior_id (requested))
-       error (_("Inferior ID %d not known."), requested);
-    }
-
-  print_inferior (uiout, requested);
+  print_inferior (uiout, args);
 }
 
 /* remove-inferior ID */
@@ -1048,8 +1042,8 @@ initialize_inferiors (void)
   current_inferior_->pspace = current_program_space;
   current_inferior_->aspace = current_program_space->aspace;
 
-  add_info ("inferiors", info_inferiors_command,
-           _("IDs of currently known inferiors."));
+  add_info ("inferiors", info_inferiors_command, 
+           _("IDs of specified inferiors (all inferiors if no argument)."));
 
   add_com ("add-inferior", no_class, add_inferior_command, _("\
 Add a new inferior.\n\
index 381fd8274db62a603566e1a4b64555153e1a6e6e..8508ce4a1dd5d2d5b6ff588853b498074f5cf186 100644 (file)
@@ -616,12 +616,6 @@ extern struct inferior *iterate_over_inferiors (int (*) (struct inferior *,
                                                         void *),
                                                void *);
 
-/* Prints the list of inferiors and their details on UIOUT.
-
-   If REQUESTED_INFERIOR is not -1, it's the GDB id of the inferior
-   that should be printed.  Otherwise, all inferiors are printed.  */
-extern void print_inferior (struct ui_out *uiout, int requested_inferior);
-
 /* Returns true if the inferior list is not empty.  */
 extern int have_inferiors (void);
 
index deedcd97e9877bfe9725905e4538fd10a6a103a5..8e262912d2f518fa859449ce87e0f8e16aa3dadd 100644 (file)
@@ -1,3 +1,7 @@
+2011-02-25  Michael Snyder  <msnyder@vmware.com>
+
+       * gdb.multi/base.exp: Add tests for info inferiors with args.
+
 2011-02-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * gdb.dwarf2/dw2-ranges.S: Rename to ...
index 55f90fde9058b5582076bc73201752f5dc011a06..c45b84695f40d99ddccc2de827bec5aa28c1beea 100644 (file)
@@ -61,6 +61,60 @@ gdb_test "add-inferior -exec ${binfile3}" \
 gdb_test "info inferiors" \
     "Executable.*${exec3}.*${exec2}.*${exec1}.*"
 
+# Test info inferiors with args
+
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferior 2 3" "info inferior 2 3" {
+    -re ". 3 \[^\r\n\]*${exec3}" {
+       set see3 1
+       exp_continue
+    }
+    -re ". 2 \[^\r\n\]*${exec2}" {
+       set see2 1
+       exp_continue
+    }
+    -re ". 1 \[^\r\n\]*${exec1}" {
+       set see1 1
+       exp_continue
+    }
+    -re "$gdb_prompt $" {
+       if { !$see1 && $see2 && $see3 } then {
+           pass "info inferior 2 3"
+       } else {
+           fail "info inferior 2 3"
+       }
+    }
+}
+
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferior 1-2" "info inferior 1-2" {
+    -re ". 3 \[^\r\n\]*${exec3}" {
+       set see3 1
+       exp_continue
+    }
+    -re ". 2 \[^\r\n\]*${exec2}" {
+       set see2 1
+       exp_continue
+    }
+    -re ". 1 \[^\r\n\]*${exec1}" {
+       set see1 1
+       exp_continue
+    }
+    -re "$gdb_prompt $" {
+       if { $see1 && $see2 && !$see3 } then {
+           pass "info inferior 1-2"
+       } else {
+           fail "info inferior 1-2"
+       }
+    }
+}
+
 # Test that we have multiple symbol tables.
 
 gdb_test "inferior 1" ".*" "switch to inferior 1"