From: Michael Snyder <msnyder@vmware.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
Pedro Alves <pedro@codesourcery.com>
Subject: [rfa] Use get_number_or_range for kill inferior etc.
Date: Fri, 25 Feb 2011 20:52:00 -0000 [thread overview]
Message-ID: <4D680E45.50607@vmware.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 36 bytes --]
With an additional testsuite test.
[-- Attachment #2: remove.txt --]
[-- Type: text/plain, Size: 5855 bytes --]
2011-02-25 Michael Snyder <msnyder@vmware.com>
* inferior.c (detach_inferior_command): Use get_number_or_range.
(kill_inferior_command): Ditto.
(remove_inferior_command): Ditto.
(initialize_inferiors): Make command names plural.
Update help strings.
2011-02-25 Michael Snyder <msnyder@vmware.com>
* gdb.multi/base.exp: Add test for remove-inferiors.
Index: inferior.c
===================================================================
RCS file: /cvs/src/src/gdb/inferior.c,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 inferior.c
--- inferior.c 25 Feb 2011 19:19:25 -0000 1.24
+++ inferior.c 25 Feb 2011 20:15:42 -0000
@@ -626,20 +626,23 @@ detach_inferior_command (char *args, int
if (!args || !*args)
error (_("Requires argument (inferior id to detach)"));
- num = parse_and_eval_long (args);
+ while (*args != '\0')
+ {
+ num = get_number_or_range (&args);
- if (!valid_gdb_inferior_id (num))
- error (_("Inferior ID %d not known."), num);
+ if (!valid_gdb_inferior_id (num))
+ error (_("Inferior ID %d not known."), num);
- pid = gdb_inferior_id_to_pid (num);
+ pid = gdb_inferior_id_to_pid (num);
- tp = any_thread_of_process (pid);
- if (!tp)
- error (_("Inferior has no threads."));
+ tp = any_thread_of_process (pid);
+ if (!tp)
+ error (_("Inferior has no threads."));
- switch_to_thread (tp->ptid);
+ switch_to_thread (tp->ptid);
- detach_command (NULL, from_tty);
+ detach_command (NULL, from_tty);
+ }
}
static void
@@ -651,20 +654,23 @@ kill_inferior_command (char *args, int f
if (!args || !*args)
error (_("Requires argument (inferior id to kill)"));
- num = parse_and_eval_long (args);
+ while (*args != '\0')
+ {
+ num = get_number_or_range (&args);
- if (!valid_gdb_inferior_id (num))
- error (_("Inferior ID %d not known."), num);
+ if (!valid_gdb_inferior_id (num))
+ error (_("Inferior ID %d not known."), num);
- pid = gdb_inferior_id_to_pid (num);
+ pid = gdb_inferior_id_to_pid (num);
- tp = any_thread_of_process (pid);
- if (!tp)
- error (_("Inferior has no threads."));
+ tp = any_thread_of_process (pid);
+ if (!tp)
+ error (_("Inferior has no threads."));
- switch_to_thread (tp->ptid);
+ switch_to_thread (tp->ptid);
- target_kill ();
+ target_kill ();
+ }
bfd_cache_close_all ();
}
@@ -740,19 +746,25 @@ remove_inferior_command (char *args, int
int num;
struct inferior *inf;
- num = parse_and_eval_long (args);
- inf = find_inferior_id (num);
+ if (args == NULL || *args == '\0')
+ error (_("Requires an argument (inferior id to remove)"));
- if (inf == NULL)
- error (_("Inferior ID %d not known."), num);
+ while (*args != '\0')
+ {
+ num = get_number_or_range (&args);
+ inf = find_inferior_id (num);
+
+ if (inf == NULL)
+ error (_("Inferior ID %d not known."), num);
- if (inf == current_inferior ())
- error (_("Can not remove current symbol inferior."));
+ if (inf == current_inferior ())
+ error (_("Can not remove current symbol inferior."));
- if (inf->pid != 0)
- error (_("Can not remove an active inferior."));
+ if (inf->pid != 0)
+ error (_("Can not remove an active inferior."));
- delete_inferior_1 (inf, 1);
+ delete_inferior_1 (inf, 1);
+ }
}
struct inferior *
@@ -1048,13 +1060,13 @@ initialize_inferiors (void)
add_com ("add-inferior", no_class, add_inferior_command, _("\
Add a new inferior.\n\
Usage: add-inferior [-copies <N>] [-exec <FILENAME>]\n\
-N is the optional number of inferior to add, default is 1.\n\
+N is the optional number of inferiors to add, default is 1.\n\
FILENAME is the file name of the executable to use\n\
as main program."));
- add_com ("remove-inferior", no_class, remove_inferior_command, _("\
-Remove inferior ID.\n\
-Usage: remove-inferior ID"));
+ add_com ("remove-inferiors", no_class, remove_inferior_command, _("\
+Remove inferior ID (or list of IDs).\n\
+Usage: remove-inferiors ID..."));
add_com ("clone-inferior", no_class, clone_inferior_command, _("\
Clone inferior ID.\n\
@@ -1064,12 +1076,12 @@ executable loaded as the copied inferior
adds 1 copy. If ID is not specified, it is the current inferior\n\
that is cloned."));
- add_cmd ("inferior", class_run, detach_inferior_command, _("\
-Detach from inferior ID."),
+ add_cmd ("inferiors", class_run, detach_inferior_command, _("\
+Detach from inferior ID (or list of IDS)."),
&detachlist);
- add_cmd ("inferior", class_run, kill_inferior_command, _("\
-Kill inferior ID."),
+ add_cmd ("inferiors", class_run, kill_inferior_command, _("\
+Kill inferior ID (or list of IDs)."),
&killlist);
add_cmd ("inferior", class_run, inferior_command, _("\
Index: testsuite/gdb.multi/base.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.multi/base.exp,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 base.exp
--- testsuite/gdb.multi/base.exp 25 Feb 2011 19:19:26 -0000 1.8
+++ testsuite/gdb.multi/base.exp 25 Feb 2011 20:15:42 -0000
@@ -156,3 +156,34 @@ if { ![runto_main] } then {
gdb_test "break hello" ".*"
gdb_test "continue" "Breakpoint \[0-9\].*, hello.*"
+
+# Now let's remove the other two
+
+gdb_test_no_output "remove-inferior 2-3" "remove-inferior 2-3"
+
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferiors" "check remove-inferiors" {
+ -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 "check remove-inferiors"
+ } else {
+ fail "check remove-inferiors"
+ }
+ }
+}
+
next reply other threads:[~2011-02-25 20:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-25 20:52 Michael Snyder [this message]
2011-02-25 21:45 ` Pedro Alves
2011-02-25 22:30 ` Michael Snyder
2011-02-25 23:16 ` Eli Zaretskii
2011-02-26 2:09 ` Michael Snyder
2011-02-26 10:35 ` Eli Zaretskii
2011-02-26 18:47 ` Michael Snyder
2011-02-26 19:52 ` Eli Zaretskii
2011-02-26 13:53 ` Pedro Alves
2011-02-27 20:57 ` Michael Snyder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D680E45.50607@vmware.com \
--to=msnyder@vmware.com \
--cc=gdb-patches@sourceware.org \
--cc=pedro@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox