summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/binutils/gdb/inftarg.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2004-12-27 14:01:02 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2004-12-27 14:01:02 +0000
commit7cb023cfb07d13fb208030e4352f159f1e2b229d (patch)
tree961c03598dd9430c22e1c634d533db0a08de8999 /gnu/usr.bin/binutils/gdb/inftarg.c
parent5b0cde74db4ad7c994ffdca423951b72310dd8cb (diff)
Resolve conflicts for GDB 6.3. Add local patches.
ok deraadt@
Diffstat (limited to 'gnu/usr.bin/binutils/gdb/inftarg.c')
-rw-r--r--gnu/usr.bin/binutils/gdb/inftarg.c266
1 files changed, 110 insertions, 156 deletions
diff --git a/gnu/usr.bin/binutils/gdb/inftarg.c b/gnu/usr.bin/binutils/gdb/inftarg.c
index a6f40ec12c2..e9ace23a17f 100644
--- a/gnu/usr.bin/binutils/gdb/inftarg.c
+++ b/gnu/usr.bin/binutils/gdb/inftarg.c
@@ -34,7 +34,7 @@
#include <signal.h>
#include <sys/types.h>
#include <fcntl.h>
-
+#include "observer.h"
#include "gdb_wait.h"
#include "inflow.h"
@@ -53,10 +53,6 @@ static void child_prepare_to_store (void);
static ptid_t child_wait (ptid_t, struct target_waitstatus *);
#endif /* CHILD_WAIT */
-#if !defined(CHILD_POST_WAIT)
-void child_post_wait (ptid_t, int);
-#endif
-
static void child_open (char *, int);
static void child_files_info (struct target_ops *);
@@ -73,7 +69,7 @@ static void ptrace_me (void);
static void ptrace_him (int);
-static void child_create_inferior (char *, char *, char **);
+static void child_create_inferior (char *, char *, char **, int);
static void child_mourn_inferior (void);
@@ -89,8 +85,6 @@ static void init_child_ops (void);
extern char **environ;
-struct target_ops child_ops;
-
int child_suppress_run = 0; /* Non-zero if inftarg should pretend not to
be a runnable target. Used by targets
that can sit atop inftarg, such as HPUX
@@ -119,7 +113,7 @@ child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
attached process. */
set_sigio_trap ();
- pid = ptrace_wait (inferior_ptid, &status);
+ pid = wait (&status);
save_errno = errno;
@@ -161,17 +155,6 @@ child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
}
#endif /* CHILD_WAIT */
-#if !defined(CHILD_POST_WAIT)
-void
-child_post_wait (ptid_t ptid, int wait_status)
-{
- /* This version of Unix doesn't require a meaningful "post wait"
- operation.
- */
-}
-#endif
-
-
#ifndef CHILD_THREAD_ALIVE
/* Check to see if the given thread is alive.
@@ -194,46 +177,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);
- }
-#endif /* ATTACH_DETACH */
+ attach (pid);
+
+ inferior_ptid = pid_to_ptid (pid);
+ push_target (&deprecated_child_ops);
}
#if !defined(CHILD_POST_ATTACH)
@@ -256,31 +233,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 (&deprecated_child_ops);
}
/* Get ready to modify the registers array. On machines which store
@@ -319,7 +290,7 @@ static void
ptrace_me (void)
{
/* "Trace me, Dr. Memory!" */
- call_ptrace (0, 0, (PTRACE_ARG3_TYPE) 0, 0);
+ call_ptrace (0, 0, (PTRACE_TYPE_ARG3) 0, 0);
}
/* Stub function which causes the GDB that runs it, to start ptrace-ing
@@ -328,7 +299,7 @@ ptrace_me (void)
static void
ptrace_him (int pid)
{
- push_target (&child_ops);
+ push_target (&deprecated_child_ops);
/* On some targets, there must be some explicit synchronization
between the parent and child processes after the debugger
@@ -356,7 +327,8 @@ ptrace_him (int pid)
ENV is the environment vector to pass. Errors reported with error(). */
static void
-child_create_inferior (char *exec_file, char *allargs, char **env)
+child_create_inferior (char *exec_file, char *allargs, char **env,
+ int from_tty)
{
#ifdef HPUXHPPA
fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, pre_fork_inferior, NULL);
@@ -364,6 +336,7 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, NULL, NULL);
#endif
/* We are at the first instruction we care about. */
+ observer_notify_inferior_created (&current_target, from_tty);
/* Pedal to the metal... */
proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0);
}
@@ -489,7 +462,7 @@ child_has_exited (int pid, int wait_status, int *exit_status)
static void
child_mourn_inferior (void)
{
- unpush_target (&child_ops);
+ unpush_target (&deprecated_child_ops);
generic_mourn_inferior ();
}
@@ -567,7 +540,7 @@ child_xfer_partial (struct target_ops *ops, enum target_object object,
return child_xfer_memory (offset, readbuf, len, 0/*write*/,
NULL, ops);
if (writebuf)
- return child_xfer_memory (offset, readbuf, len, 1/*write*/,
+ return child_xfer_memory (offset, (void *) writebuf, len, 1/*write*/,
NULL, ops);
return -1;
@@ -608,76 +581,57 @@ child_pid_to_str (ptid_t ptid)
static void
init_child_ops (void)
{
- child_ops.to_shortname = "child";
- child_ops.to_longname = "Unix child process";
- child_ops.to_doc = "Unix child process (started by the \"run\" command).";
- child_ops.to_open = child_open;
- child_ops.to_attach = child_attach;
- child_ops.to_post_attach = child_post_attach;
- child_ops.to_detach = child_detach;
- child_ops.to_resume = child_resume;
- child_ops.to_wait = child_wait;
- child_ops.to_post_wait = child_post_wait;
- child_ops.to_fetch_registers = fetch_inferior_registers;
- child_ops.to_store_registers = store_inferior_registers;
- child_ops.to_prepare_to_store = child_prepare_to_store;
- child_ops.to_xfer_memory = child_xfer_memory;
- child_ops.to_xfer_partial = child_xfer_partial;
- child_ops.to_files_info = child_files_info;
- child_ops.to_insert_breakpoint = memory_insert_breakpoint;
- child_ops.to_remove_breakpoint = memory_remove_breakpoint;
- child_ops.to_terminal_init = terminal_init_inferior;
- child_ops.to_terminal_inferior = terminal_inferior;
- child_ops.to_terminal_ours_for_output = terminal_ours_for_output;
- child_ops.to_terminal_save_ours = terminal_save_ours;
- child_ops.to_terminal_ours = terminal_ours;
- child_ops.to_terminal_info = child_terminal_info;
- child_ops.to_kill = kill_inferior;
- child_ops.to_create_inferior = child_create_inferior;
- child_ops.to_post_startup_inferior = child_post_startup_inferior;
- child_ops.to_acknowledge_created_inferior = child_acknowledge_created_inferior;
- child_ops.to_insert_fork_catchpoint = child_insert_fork_catchpoint;
- child_ops.to_remove_fork_catchpoint = child_remove_fork_catchpoint;
- child_ops.to_insert_vfork_catchpoint = child_insert_vfork_catchpoint;
- child_ops.to_remove_vfork_catchpoint = child_remove_vfork_catchpoint;
- child_ops.to_follow_fork = child_follow_fork;
- child_ops.to_insert_exec_catchpoint = child_insert_exec_catchpoint;
- child_ops.to_remove_exec_catchpoint = child_remove_exec_catchpoint;
- child_ops.to_reported_exec_events_per_exec_call = child_reported_exec_events_per_exec_call;
- child_ops.to_has_exited = child_has_exited;
- child_ops.to_mourn_inferior = child_mourn_inferior;
- child_ops.to_can_run = child_can_run;
- child_ops.to_thread_alive = child_thread_alive;
- child_ops.to_pid_to_str = child_pid_to_str;
- child_ops.to_stop = child_stop;
- child_ops.to_enable_exception_callback = child_enable_exception_callback;
- child_ops.to_get_current_exception_event = child_get_current_exception_event;
- child_ops.to_pid_to_exec_file = child_pid_to_exec_file;
- child_ops.to_stratum = process_stratum;
- child_ops.to_has_all_memory = 1;
- child_ops.to_has_memory = 1;
- child_ops.to_has_stack = 1;
- child_ops.to_has_registers = 1;
- child_ops.to_has_execution = 1;
- child_ops.to_magic = OPS_MAGIC;
-}
-
-/* Take over the 'find_mapped_memory' vector from inftarg.c. */
-extern void
-inftarg_set_find_memory_regions (int (*func) (int (*) (CORE_ADDR,
- unsigned long,
- int, int, int,
- void *),
- void *))
-{
- child_ops.to_find_memory_regions = func;
-}
-
-/* Take over the 'make_corefile_notes' vector from inftarg.c. */
-extern void
-inftarg_set_make_corefile_notes (char * (*func) (bfd *, int *))
-{
- child_ops.to_make_corefile_notes = func;
+ deprecated_child_ops.to_shortname = "child";
+ deprecated_child_ops.to_longname = "Unix child process";
+ deprecated_child_ops.to_doc = "Unix child process (started by the \"run\" command).";
+ deprecated_child_ops.to_open = child_open;
+ deprecated_child_ops.to_attach = child_attach;
+ deprecated_child_ops.to_post_attach = child_post_attach;
+ deprecated_child_ops.to_detach = child_detach;
+ deprecated_child_ops.to_resume = child_resume;
+ deprecated_child_ops.to_wait = child_wait;
+ deprecated_child_ops.to_fetch_registers = fetch_inferior_registers;
+ deprecated_child_ops.to_store_registers = store_inferior_registers;
+ deprecated_child_ops.to_prepare_to_store = child_prepare_to_store;
+ deprecated_child_ops.deprecated_xfer_memory = child_xfer_memory;
+ deprecated_child_ops.to_xfer_partial = child_xfer_partial;
+ deprecated_child_ops.to_files_info = child_files_info;
+ deprecated_child_ops.to_insert_breakpoint = memory_insert_breakpoint;
+ deprecated_child_ops.to_remove_breakpoint = memory_remove_breakpoint;
+ deprecated_child_ops.to_terminal_init = terminal_init_inferior;
+ deprecated_child_ops.to_terminal_inferior = terminal_inferior;
+ deprecated_child_ops.to_terminal_ours_for_output = terminal_ours_for_output;
+ deprecated_child_ops.to_terminal_save_ours = terminal_save_ours;
+ deprecated_child_ops.to_terminal_ours = terminal_ours;
+ deprecated_child_ops.to_terminal_info = child_terminal_info;
+ deprecated_child_ops.to_kill = kill_inferior;
+ deprecated_child_ops.to_create_inferior = child_create_inferior;
+ deprecated_child_ops.to_post_startup_inferior = child_post_startup_inferior;
+ deprecated_child_ops.to_acknowledge_created_inferior = child_acknowledge_created_inferior;
+ deprecated_child_ops.to_insert_fork_catchpoint = child_insert_fork_catchpoint;
+ deprecated_child_ops.to_remove_fork_catchpoint = child_remove_fork_catchpoint;
+ deprecated_child_ops.to_insert_vfork_catchpoint = child_insert_vfork_catchpoint;
+ deprecated_child_ops.to_remove_vfork_catchpoint = child_remove_vfork_catchpoint;
+ deprecated_child_ops.to_follow_fork = child_follow_fork;
+ deprecated_child_ops.to_insert_exec_catchpoint = child_insert_exec_catchpoint;
+ deprecated_child_ops.to_remove_exec_catchpoint = child_remove_exec_catchpoint;
+ deprecated_child_ops.to_reported_exec_events_per_exec_call = child_reported_exec_events_per_exec_call;
+ deprecated_child_ops.to_has_exited = child_has_exited;
+ deprecated_child_ops.to_mourn_inferior = child_mourn_inferior;
+ deprecated_child_ops.to_can_run = child_can_run;
+ deprecated_child_ops.to_thread_alive = child_thread_alive;
+ deprecated_child_ops.to_pid_to_str = child_pid_to_str;
+ deprecated_child_ops.to_stop = child_stop;
+ deprecated_child_ops.to_enable_exception_callback = child_enable_exception_callback;
+ deprecated_child_ops.to_get_current_exception_event = child_get_current_exception_event;
+ deprecated_child_ops.to_pid_to_exec_file = child_pid_to_exec_file;
+ deprecated_child_ops.to_stratum = process_stratum;
+ deprecated_child_ops.to_has_all_memory = 1;
+ deprecated_child_ops.to_has_memory = 1;
+ deprecated_child_ops.to_has_stack = 1;
+ deprecated_child_ops.to_has_registers = 1;
+ deprecated_child_ops.to_has_execution = 1;
+ deprecated_child_ops.to_magic = OPS_MAGIC;
}
void
@@ -702,5 +656,5 @@ _initialize_inftarg (void)
#endif
init_child_ops ();
- add_target (&child_ops);
+ add_target (&deprecated_child_ops);
}