From: Marc Khouzam Date: Fri, 12 Nov 2010 19:04:45 +0000 (+0000) Subject: 2010-11-12 Marc Khouzam X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70116e758129de02d8fb5bff91c98b2d7dfc838b;p=thirdparty%2Fbinutils-gdb.git 2010-11-12 Marc Khouzam * mi/mi-main.c (mi_cmd_target_detach): Accept new thread-group id format. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 457026238b1..b224cf69acb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-11-12 Marc Khouzam + + * mi/mi-main.c (mi_cmd_target_detach): Accept new + thread-group id format. + 2010-11-04 Hui Zhu * tracepoint.c (remote_trace_set_readonly_regions): Change lma to vma. diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index b9964753b65..96c02fe309a 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -418,19 +418,40 @@ void mi_cmd_target_detach (char *command, char **argv, int argc) { if (argc != 0 && argc != 1) - error ("Usage: -target-detach [thread-group]"); + error ("Usage: -target-detach [pid | thread-group]"); if (argc == 1) { struct thread_info *tp; char *end = argv[0]; - int pid = strtol (argv[0], &end, 10); + int pid; - if (*end != '\0') - error (_("Cannot parse thread group id '%s'"), argv[0]); + /* First see if we are dealing with a thread-group id. */ + if (*argv[0] == 'i') + { + struct inferior *inf; + int id = strtoul (argv[0] + 1, &end, 0); + + if (*end != '\0') + error (_("Invalid syntax of thread-group id '%s'"), argv[0]); + + inf = find_inferior_id (id); + if (!inf) + error (_("Non-existent thread-group id '%d'"), id); + + pid = inf->pid; + } + else + { + /* We must be dealing with a pid. */ + pid = strtol (argv[0], &end, 10); + + if (*end != '\0') + error (_("Invalid identifier '%s'"), argv[0]); + } /* Pick any thread in the desired process. Current - target_detach deteches from the parent of inferior_ptid. */ + target_detach detaches from the parent of inferior_ptid. */ tp = iterate_over_threads (find_thread_of_process, &pid); if (!tp) error (_("Thread group is empty"));