mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-27 22:10:32 +00:00
gdb/
* defs.h (parse_pid_to_attach): New. * utils.c (parse_pid_to_attach): New. * darwin-nat.c (darwin_attach): Replace ARGS parsing by parse_pid. * gnu-nat.c (gnu_attach): Likewise. * nto-procfs.c (procfs_attach): Likewise. * procfs.c (procfs_attach): Likewise. * windows-nat.c (windows_attach): Likewise. * inf-ptrace.c (inf_ptrace_attach): Likewise. Remove variable dummy. * inf-ttrace.c (inf_ttrace_attach): Likewise. * remote.c (extended_remote_attach_1): Likewise. New comment on getpid check. gdb/testsuite/ * gdb.base/attach.exp (attach to nonsense is prohibited): Make the "Illegal process-id" expect string more exact. (attach to digits-starting nonsense is prohibited): New.
This commit is contained in:
parent
01a8201190
commit
74164c5624
@ -1,3 +1,17 @@
|
||||
2010-02-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* defs.h (parse_pid_to_attach): New.
|
||||
* utils.c (parse_pid_to_attach): New.
|
||||
* darwin-nat.c (darwin_attach): Replace ARGS parsing by parse_pid.
|
||||
* gnu-nat.c (gnu_attach): Likewise.
|
||||
* nto-procfs.c (procfs_attach): Likewise.
|
||||
* procfs.c (procfs_attach): Likewise.
|
||||
* windows-nat.c (windows_attach): Likewise.
|
||||
* inf-ptrace.c (inf_ptrace_attach): Likewise. Remove variable dummy.
|
||||
* inf-ttrace.c (inf_ttrace_attach): Likewise.
|
||||
* remote.c (extended_remote_attach_1): Likewise. New comment on getpid
|
||||
check.
|
||||
|
||||
2010-02-14 Masaki Muranaka <monaka@monami-software.com>
|
||||
|
||||
* MAINTAINERS: Add myself for write after approval privileges.
|
||||
|
@ -1514,10 +1514,7 @@ darwin_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
struct inferior *inf;
|
||||
kern_return_t kret;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
pid = atoi (args);
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (pid == getpid ()) /* Trying to masturbate? */
|
||||
error (_("I refuse to debug myself!"));
|
||||
|
@ -426,6 +426,8 @@ int compare_positive_ints (const void *ap, const void *bp);
|
||||
|
||||
extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
|
||||
|
||||
extern int parse_pid_to_attach (char *args);
|
||||
|
||||
/* From demangle.c */
|
||||
|
||||
extern void set_demangling_style (char *);
|
||||
|
@ -2139,10 +2139,7 @@ gnu_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
struct inf *inf = cur_inf ();
|
||||
struct inferior *inferior;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
pid = atoi (args);
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (pid == getpid ()) /* Trying to masturbate? */
|
||||
error (_("I refuse to debug myself!"));
|
||||
|
@ -187,17 +187,9 @@ inf_ptrace_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
{
|
||||
char *exec_file;
|
||||
pid_t pid;
|
||||
char *dummy;
|
||||
struct inferior *inf;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
dummy = args;
|
||||
pid = strtol (args, &dummy, 0);
|
||||
/* Some targets don't set errno on errors, grrr! */
|
||||
if (pid == 0 && args == dummy)
|
||||
error (_("Illegal process-id: %s."), args);
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (pid == getpid ()) /* Trying to masturbate? */
|
||||
error (_("I refuse to debug myself!"));
|
||||
|
@ -691,17 +691,10 @@ inf_ttrace_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
{
|
||||
char *exec_file;
|
||||
pid_t pid;
|
||||
char *dummy;
|
||||
ttevent_t tte;
|
||||
struct inferior *inf;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
dummy = args;
|
||||
pid = strtol (args, &dummy, 0);
|
||||
if (pid == 0 && args == dummy)
|
||||
error (_("Illegal process-id: %s."), args);
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (pid == getpid ()) /* Trying to masturbate? */
|
||||
error (_("I refuse to debug myself!"));
|
||||
|
@ -619,10 +619,7 @@ procfs_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
int pid;
|
||||
struct inferior *inf;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
pid = atoi (args);
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (pid == getpid ())
|
||||
error (_("Attaching GDB to itself is not a good idea..."));
|
||||
|
@ -3606,10 +3606,8 @@ procfs_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
char *exec_file;
|
||||
int pid;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
pid = atoi (args);
|
||||
if (pid == getpid ())
|
||||
error (_("Attaching GDB to itself is not a good idea..."));
|
||||
|
||||
|
11
gdb/remote.c
11
gdb/remote.c
@ -3857,17 +3857,12 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
|
||||
{
|
||||
struct remote_state *rs = get_remote_state ();
|
||||
int pid;
|
||||
char *dummy;
|
||||
char *wait_status = NULL;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
dummy = args;
|
||||
pid = strtol (args, &dummy, 0);
|
||||
/* Some targets don't set errno on errors, grrr! */
|
||||
if (pid == 0 && args == dummy)
|
||||
error (_("Illegal process-id: %s."), args);
|
||||
/* Remote PID can be freely equal to getpid, do not check it here the same
|
||||
way as in other targets. */
|
||||
|
||||
if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE)
|
||||
error (_("This target does not support attaching to a process"));
|
||||
|
@ -1,3 +1,9 @@
|
||||
2010-02-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/attach.exp (attach to nonsense is prohibited): Make the
|
||||
"Illegal process-id" expect string more exact.
|
||||
(attach to digits-starting nonsense is prohibited): New.
|
||||
|
||||
2010-02-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/prelink.exp (set verbose on): New.
|
||||
|
@ -93,7 +93,28 @@ proc do_attach_tests {} {
|
||||
|
||||
set test "attach to nonsense is prohibited"
|
||||
gdb_test_multiple "attach abc" "$test" {
|
||||
-re "Illegal process-id: abc.*$gdb_prompt $" {
|
||||
-re "Illegal process-id: abc\\.\r\n$gdb_prompt $" {
|
||||
pass "$test"
|
||||
}
|
||||
-re "Attaching to.*, process .*couldn't open /proc file.*$gdb_prompt $" {
|
||||
# Response expected from /proc-based systems.
|
||||
pass "$test"
|
||||
}
|
||||
-re "Can't attach to process..*$gdb_prompt $" {
|
||||
# Response expected on Cygwin
|
||||
pass "$test"
|
||||
}
|
||||
-re "Attaching to.*$gdb_prompt $" {
|
||||
fail "$test (bogus pid allowed)"
|
||||
}
|
||||
}
|
||||
|
||||
# Verify that we cannot attach to nonsense even if its initial part is
|
||||
# a valid PID.
|
||||
|
||||
set test "attach to digits-starting nonsense is prohibited"
|
||||
gdb_test_multiple "attach ${testpid}x" "$test" {
|
||||
-re "Illegal process-id: ${testpid}x\\.\r\n$gdb_prompt $" {
|
||||
pass "$test"
|
||||
}
|
||||
-re "Attaching to.*, process .*couldn't open /proc file.*$gdb_prompt $" {
|
||||
|
20
gdb/utils.c
20
gdb/utils.c
@ -3648,6 +3648,26 @@ gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Return ARGS parsed as a valid pid, or throw an error. */
|
||||
|
||||
int
|
||||
parse_pid_to_attach (char *args)
|
||||
{
|
||||
unsigned long pid;
|
||||
char *dummy;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
|
||||
dummy = args;
|
||||
pid = strtoul (args, &dummy, 0);
|
||||
/* Some targets don't set errno on errors, grrr! */
|
||||
if ((pid == 0 && dummy == args) || dummy != &args[strlen (args)])
|
||||
error (_("Illegal process-id: %s."), args);
|
||||
|
||||
return pid;
|
||||
}
|
||||
|
||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||
extern initialize_file_ftype _initialize_utils;
|
||||
|
||||
|
@ -1691,8 +1691,7 @@ windows_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
BOOL ok;
|
||||
DWORD pid;
|
||||
|
||||
if (!args)
|
||||
error_no_arg (_("process-id to attach"));
|
||||
pid = parse_pid_to_attach (args);
|
||||
|
||||
if (set_process_privilege (SE_DEBUG_NAME, TRUE) < 0)
|
||||
{
|
||||
@ -1700,8 +1699,6 @@ windows_attach (struct target_ops *ops, char *args, int from_tty)
|
||||
printf_unfiltered ("This can cause attach to fail on Windows NT/2K/XP\n");
|
||||
}
|
||||
|
||||
pid = strtoul (args, 0, 0); /* Windows pid */
|
||||
|
||||
windows_init_thread_list ();
|
||||
ok = DebugActiveProcess (pid);
|
||||
saw_create = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user