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 *);
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
attached process. */
set_sigio_trap ();
- pid = ptrace_wait (inferior_ptid, &status);
+ pid = wait (&status);
save_errno = errno;
}
#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.
attach (pid);
inferior_ptid = pid_to_ptid (pid);
- push_target (&child_ops);
+ push_target (&deprecated_child_ops);
+
+ /* Do this first, before anything has had a chance to query the
+ inferior's symbol table or similar. */
+ observer_notify_inferior_created (¤t_target, from_tty);
}
#if !defined(CHILD_POST_ATTACH)
detach (siggnal);
inferior_ptid = null_ptid;
- unpush_target (&child_ops);
+ unpush_target (&deprecated_child_ops);
}
/* Get ready to modify the registers array. On machines which store
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
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);
-#else
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 (¤t_target, from_tty);
/* Pedal to the metal... */
static void
child_mourn_inferior (void)
{
- unpush_target (&child_ops);
+ unpush_target (&deprecated_child_ops);
generic_mourn_inferior ();
}
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;
return NATIVE_XFER_AUXV (ops, object, annex, readbuf, writebuf,
offset, len);
- case TARGET_OBJECT_WCOOKIE:
-#ifndef NATIVE_XFER_WCOOKIE
-#define NATIVE_XFER_WCOOKIE(OPS,OBJECT,ANNEX,WRITEBUF,READBUF,OFFSET,LEN) (-1)
-#endif
- return NATIVE_XFER_WCOOKIE (ops, object, annex, readbuf, writebuf,
- offset, len);
-
default:
return -1;
}
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
#endif
init_child_ops ();
- add_target (&child_ops);
+ add_target (&deprecated_child_ops);
}