aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2004-06-08 19:58:15 +0000
committerAndrew Cagney <cagney@redhat.com>2004-06-08 19:58:15 +0000
commitd966f0cbf54fc58741ba50659f6e48dab6081148 (patch)
tree579067a3360adf4ee0a4eeee206a908f87ca4d5f
parentd91670b90d86f64037d24b6ce19fc162c373ff45 (diff)
downloadgdb-d966f0cbf54fc58741ba50659f6e48dab6081148.zip
gdb-d966f0cbf54fc58741ba50659f6e48dab6081148.tar.gz
gdb-d966f0cbf54fc58741ba50659f6e48dab6081148.tar.bz2
2004-06-08 Andrew Cagney <cagney@gnu.org>
* infptrace.c [ATTACH_DETACH]: Remove #ifdef wrappers. (attach, detach): When neither PT_ATTACH / PT_DETACH nor PTRACE_ATTACH / PTRACE_DETACH available call error. (PT_ATTACH, PT_DETACH): Move definition to attach / detach. * infttrace.c (update_thread_state_after_attach, attach, detach): Remove #ifdef wrappers. * inftarg.c (child_attach, child_detach): Remove #ifdef wrappers. * gnu-nat.c [ATTACH_DETACH]: Remove #ifdef wrappers. * config/nm-bsd.h (ATTACH_DETACH): Delete. * config/nm-sysv4.h (ATTACH_DETACH): Delete. * config/nm-nbsd.h (ATTACH_DETACH): Delete. * config/nm-linux.h (ATTACH_DETACH): Delete. * config/rs6000/nm-rs6000.h (ATTACH_DETACH): Delete. * config/pa/nm-hppah.h (ATTACH_DETACH): Delete. * config/i386/nm-i386sco5.h (ATTACH_DETACH): Delete. * config/i386/nm-i386sco4.h (ATTACH_DETACH): Delete. * config/i386/nm-i386gnu.h (ATTACH_DETACH): Delete. Index: doc/ChangeLog 2004-06-08 Andrew Cagney <cagney@gnu.org> * gdbint.texinfo (Native Debugging): Delete documentation on ATTACH_DETACH.
-rw-r--r--gdb/ChangeLog20
-rw-r--r--gdb/config/i386/nm-i386gnu.h3
-rw-r--r--gdb/config/i386/nm-i386sco4.h2
-rw-r--r--gdb/config/i386/nm-i386sco5.h3
-rw-r--r--gdb/config/nm-bsd.h3
-rw-r--r--gdb/config/nm-linux.h3
-rw-r--r--gdb/config/nm-nbsd.h2
-rw-r--r--gdb/config/nm-sysv4.h5
-rw-r--r--gdb/config/pa/nm-hppah.h9
-rw-r--r--gdb/config/rs6000/nm-rs6000.h4
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdbint.texinfo6
-rw-r--r--gdb/gnu-nat.c4
-rw-r--r--gdb/infptrace.c28
-rw-r--r--gdb/inftarg.c112
-rw-r--r--gdb/infttrace.c5
16 files changed, 91 insertions, 123 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 247f012..7dec79d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,23 @@
+2004-06-08 Andrew Cagney <cagney@gnu.org>
+
+ * infptrace.c [ATTACH_DETACH]: Remove #ifdef wrappers.
+ (attach, detach): When neither PT_ATTACH / PT_DETACH nor
+ PTRACE_ATTACH / PTRACE_DETACH available call error.
+ (PT_ATTACH, PT_DETACH): Move definition to attach / detach.
+ * infttrace.c (update_thread_state_after_attach, attach, detach):
+ Remove #ifdef wrappers.
+ * inftarg.c (child_attach, child_detach): Remove #ifdef wrappers.
+ * gnu-nat.c [ATTACH_DETACH]: Remove #ifdef wrappers.
+ * config/nm-bsd.h (ATTACH_DETACH): Delete.
+ * config/nm-sysv4.h (ATTACH_DETACH): Delete.
+ * config/nm-nbsd.h (ATTACH_DETACH): Delete.
+ * config/nm-linux.h (ATTACH_DETACH): Delete.
+ * config/rs6000/nm-rs6000.h (ATTACH_DETACH): Delete.
+ * config/pa/nm-hppah.h (ATTACH_DETACH): Delete.
+ * config/i386/nm-i386sco5.h (ATTACH_DETACH): Delete.
+ * config/i386/nm-i386sco4.h (ATTACH_DETACH): Delete.
+ * config/i386/nm-i386gnu.h (ATTACH_DETACH): Delete.
+
2004-06-08 Corinna Vinschen <vinschen@redhat.com>
* configure.in: Set $configdir to the right OS specific value.
diff --git a/gdb/config/i386/nm-i386gnu.h b/gdb/config/i386/nm-i386gnu.h
index 4fef763..1f3cdb5 100644
--- a/gdb/config/i386/nm-i386gnu.h
+++ b/gdb/config/i386/nm-i386gnu.h
@@ -32,7 +32,4 @@
#define THREAD_STATE_CLEAR_TRACED(state) \
((((struct i386_thread_state *) (state))->efl &= ~0x100), 1)
-/* We can attach and detach. */
-#define ATTACH_DETACH 1
-
#endif /* nm-i386gnu.h */
diff --git a/gdb/config/i386/nm-i386sco4.h b/gdb/config/i386/nm-i386sco4.h
index 6947f3f..39d7d50 100644
--- a/gdb/config/i386/nm-i386sco4.h
+++ b/gdb/config/i386/nm-i386sco4.h
@@ -25,8 +25,6 @@
#include "i386/nm-i386sco.h"
-#define ATTACH_DETACH
-
/* SCO, in its wisdom, does not provide <sys/ptrace.h>. infptrace.c
does not have defaults for these values. */
#define PTRACE_ATTACH 10
diff --git a/gdb/config/i386/nm-i386sco5.h b/gdb/config/i386/nm-i386sco5.h
index 65f3176..5c656b0 100644
--- a/gdb/config/i386/nm-i386sco5.h
+++ b/gdb/config/i386/nm-i386sco5.h
@@ -51,9 +51,6 @@
#define KERNEL_U_SIZE kernel_u_size ()
extern int kernel_u_size (void);
-/* We can attach and detach. */
-#define ATTACH_DETACH
-
/* Hardware-assisted breakpoints and watchpoints. */
/* We can also do hardware watchpoints. */
diff --git a/gdb/config/nm-bsd.h b/gdb/config/nm-bsd.h
index b44dd5e..ca349a4 100644
--- a/gdb/config/nm-bsd.h
+++ b/gdb/config/nm-bsd.h
@@ -24,6 +24,3 @@
/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
#define FETCH_INFERIOR_REGISTERS
-
-/* We can attach and detach. */
-#define ATTACH_DETACH
diff --git a/gdb/config/nm-linux.h b/gdb/config/nm-linux.h
index 950e5af..0817c0a 100644
--- a/gdb/config/nm-linux.h
+++ b/gdb/config/nm-linux.h
@@ -24,9 +24,6 @@ struct target_ops;
/* GNU/Linux is SVR4-ish but its /proc file system isn't. */
#undef USE_PROC_FS
-/* Tell GDB that we can attach and detach other processes. */
-#define ATTACH_DETACH
-
/* Since we're building a native debugger, we can include <signal.h>
to find the range of real-time signals. */
diff --git a/gdb/config/nm-nbsd.h b/gdb/config/nm-nbsd.h
index 5078c56..e895abc 100644
--- a/gdb/config/nm-nbsd.h
+++ b/gdb/config/nm-nbsd.h
@@ -22,6 +22,4 @@
#define FETCH_INFERIOR_REGISTERS
-#define ATTACH_DETACH
-
#include "solib.h" /* Support for shared libraries. */
diff --git a/gdb/config/nm-sysv4.h b/gdb/config/nm-sysv4.h
index 4b4f098..efd2cf6 100644
--- a/gdb/config/nm-sysv4.h
+++ b/gdb/config/nm-sysv4.h
@@ -27,8 +27,3 @@
/* SVR4 has /proc support, so use it instead of ptrace. */
#define USE_PROC_FS
-
-/* SVR4 machines can easily do attach and detach via /proc (procfs.c)
- support */
-
-#define ATTACH_DETACH
diff --git a/gdb/config/pa/nm-hppah.h b/gdb/config/pa/nm-hppah.h
index bf4fd3c..3b0b30d 100644
--- a/gdb/config/pa/nm-hppah.h
+++ b/gdb/config/pa/nm-hppah.h
@@ -91,15 +91,6 @@ extern int hppa_require_detach (int, int);
#define PT_WRITE_I PT_WIUSER
#define PT_WRITE_D PT_WDUSER
-/* attach/detach works to some extent under BSD and HPUX. So long
- as the process you're attaching to isn't blocked waiting on io,
- blocked waiting on a signal, or in a system call things work
- fine. (The problems in those cases are related to the fact that
- the kernel can't provide complete register information for the
- target process... Which really pisses off GDB.) */
-
-#define ATTACH_DETACH
-
/* In infptrace or infttrace.c: */
/* Starting with HP-UX 10.30, support is provided (in the form of
diff --git a/gdb/config/rs6000/nm-rs6000.h b/gdb/config/rs6000/nm-rs6000.h
index 34bc0fe..ee5f918 100644
--- a/gdb/config/rs6000/nm-rs6000.h
+++ b/gdb/config/rs6000/nm-rs6000.h
@@ -19,10 +19,6 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* Do implement the attach and detach commands. */
-
-#define ATTACH_DETACH
-
/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */
#define FETCH_INFERIOR_REGISTERS
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index a7a850c..9b8b151 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2004-06-08 Andrew Cagney <cagney@gnu.org>
+
+ * gdbint.texinfo (Native Debugging): Delete documentation on
+ ATTACH_DETACH.
+
2004-06-06 Randolph Chung <tausq@debian.org>
* gdb.texinfo (push_dummy_call): Use @code{struct value}.
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
index b318257..e2228b1 100644
--- a/gdb/doc/gdbint.texinfo
+++ b/gdb/doc/gdbint.texinfo
@@ -4404,12 +4404,6 @@ defined or left undefined, to control compilation when the host and
target systems are the same. These macros should be defined (or left
undefined) in @file{nm-@var{system}.h}.
-@table @code
-@item ATTACH_DETACH
-@findex ATTACH_DETACH
-If defined, then @value{GDBN} will include support for the @code{attach} and
-@code{detach} commands.
-
@item CHILD_PREPARE_TO_STORE
@findex CHILD_PREPARE_TO_STORE
If the machine stores all registers at once in the child process, then
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index aac10f8..f43d1ba 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -2103,8 +2103,6 @@ gnu_can_run (void)
}
-#ifdef ATTACH_DETACH
-
/* Attach to process PID, then initialize for debugging it
and wait for the trace-trap that results from attaching. */
static void
@@ -2189,8 +2187,6 @@ gnu_detach (char *args, int from_tty)
unpush_target (&gnu_ops); /* Pop out of handling an inferior */
}
-#endif /* ATTACH_DETACH */
-
static void
gnu_terminal_init_inferior (void)
diff --git a/gdb/infptrace.c b/gdb/infptrace.c
index ef86f90..28419d9 100644
--- a/gdb/infptrace.c
+++ b/gdb/infptrace.c
@@ -76,13 +76,6 @@
#define PT_KILL 8 /* Send child a SIGKILL signal */
#endif
-#ifndef PT_ATTACH
-#define PT_ATTACH PTRACE_ATTACH
-#endif
-#ifndef PT_DETACH
-#define PT_DETACH PTRACE_DETACH
-#endif
-
#include "gdbcore.h"
#ifndef NO_SYS_FILE
#include <sys/file.h>
@@ -279,18 +272,25 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
}
#endif /* CHILD_RESUME */
-
-#ifdef ATTACH_DETACH
/* Start debugging the process whose number is PID. */
int
attach (int pid)
{
errno = 0;
+#ifndef PT_ATTACH
+#ifdef PTRACE_ATTACH
+#define PT_ATTACH PTRACE_ATTACH
+#endif
+#endif
+#ifdef PT_ATTACH
ptrace (PT_ATTACH, pid, (PTRACE_ARG3_TYPE) 0, 0);
if (errno)
perror_with_name ("ptrace");
attach_flag = 1;
return pid;
+#else
+ error ("This system does not support attaching to a process");
+#endif
}
/* Stop debugging the process whose number is PID
@@ -301,13 +301,21 @@ void
detach (int signal)
{
errno = 0;
+#ifndef PT_DETACH
+#ifdef PTRACE_DETACH
+#define PT_DETACH PTRACE_DETACH
+#endif
+#endif
+#ifdef PT_DETACH
ptrace (PT_DETACH, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) 1,
signal);
if (errno)
print_sys_errmsg ("ptrace", errno);
attach_flag = 0;
+#else
+ error ("This system does not support detaching from a process");
+#endif
}
-#endif /* ATTACH_DETACH */
/* Default the type of the ptrace transfer to int. */
#ifndef PTRACE_XFER_TYPE
diff --git a/gdb/inftarg.c b/gdb/inftarg.c
index a0e5dc5..384c04e 100644
--- a/gdb/inftarg.c
+++ b/gdb/inftarg.c
@@ -194,50 +194,40 @@ child_thread_alive (ptid_t ptid)
static void
child_attach (char *args, int from_tty)
{
+ char *exec_file;
+ int pid;
+ char *dummy;
+
if (!args)
error_no_arg ("process-id to attach");
-#ifndef ATTACH_DETACH
- error ("Can't attach to a process on this machine.");
-#else
- {
- char *exec_file;
- int pid;
- char *dummy;
-
- dummy = args;
- pid = strtol (args, &dummy, 0);
- /* Some targets don't set errno on errors, grrr! */
- if ((pid == 0) && (args == dummy))
+ 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\n", args);
+
+ if (pid == getpid ()) /* Trying to masturbate? */
+ error ("I refuse to debug myself!");
+
+ if (from_tty)
+ {
+ exec_file = (char *) get_exec_file (0);
+
+ if (exec_file)
+ printf_unfiltered ("Attaching to program: %s, %s\n", exec_file,
+ target_pid_to_str (pid_to_ptid (pid)));
+ else
+ printf_unfiltered ("Attaching to %s\n",
+ target_pid_to_str (pid_to_ptid (pid)));
+
+ gdb_flush (gdb_stdout);
+ }
- if (pid == getpid ()) /* Trying to masturbate? */
- error ("I refuse to debug myself!");
-
- if (from_tty)
- {
- exec_file = (char *) get_exec_file (0);
-
- if (exec_file)
- printf_unfiltered ("Attaching to program: %s, %s\n", exec_file,
- target_pid_to_str (pid_to_ptid (pid)));
- else
- printf_unfiltered ("Attaching to %s\n",
- target_pid_to_str (pid_to_ptid (pid)));
-
- gdb_flush (gdb_stdout);
- }
-
- attach (pid);
-
- inferior_ptid = pid_to_ptid (pid);
- push_target (&child_ops);
-
- /* Do this first, before anything has had a chance to query the
- inferiors symbol table or similar. */
- observer_notify_inferior_created (&current_target, from_tty);
- }
-#endif /* ATTACH_DETACH */
+ attach (pid);
+
+ inferior_ptid = pid_to_ptid (pid);
+ push_target (&child_ops);
}
#if !defined(CHILD_POST_ATTACH)
@@ -260,31 +250,25 @@ child_post_attach (int pid)
static void
child_detach (char *args, int from_tty)
{
-#ifdef ATTACH_DETACH
- {
- int siggnal = 0;
- int pid = PIDGET (inferior_ptid);
-
- if (from_tty)
- {
- char *exec_file = get_exec_file (0);
- if (exec_file == 0)
- exec_file = "";
- printf_unfiltered ("Detaching from program: %s, %s\n", exec_file,
- target_pid_to_str (pid_to_ptid (pid)));
- gdb_flush (gdb_stdout);
- }
- if (args)
- siggnal = atoi (args);
-
- detach (siggnal);
-
- inferior_ptid = null_ptid;
- unpush_target (&child_ops);
- }
-#else
- error ("This version of Unix does not support detaching a process.");
-#endif
+ int siggnal = 0;
+ int pid = PIDGET (inferior_ptid);
+
+ if (from_tty)
+ {
+ char *exec_file = get_exec_file (0);
+ if (exec_file == 0)
+ exec_file = "";
+ printf_unfiltered ("Detaching from program: %s, %s\n", exec_file,
+ target_pid_to_str (pid_to_ptid (pid)));
+ gdb_flush (gdb_stdout);
+ }
+ if (args)
+ siggnal = atoi (args);
+
+ detach (siggnal);
+
+ inferior_ptid = null_ptid;
+ unpush_target (&child_ops);
}
/* Get ready to modify the registers array. On machines which store
diff --git a/gdb/infttrace.c b/gdb/infttrace.c
index 3a8e7b4..eb79159 100644
--- a/gdb/infttrace.c
+++ b/gdb/infttrace.c
@@ -4560,8 +4560,6 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
}
#endif /* CHILD_RESUME */
-
-#ifdef ATTACH_DETACH
/*
* Like it says.
*
@@ -4733,10 +4731,8 @@ update_thread_state_after_attach (int pid, attach_continue_t kind_of_go)
attach_flag = 1;
}
-#endif /* ATTACH_DETACH */
-#ifdef ATTACH_DETACH
/* Start debugging the process whose number is PID.
* (A _real_ pid).
*/
@@ -4803,7 +4799,6 @@ detach (int signal)
/* Process-state? */
}
-#endif /* ATTACH_DETACH */
/* Default the type of the ttrace transfer to int. */