diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b8e256cbc7..2abe05d75a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2007-04-27 Ulrich Weigand + + * config/rs6000/nm-rs6000.h (TARGET_CREATE_INFERIOR_HOOK): Remove. + * fork-child.c (fork_inferior): Don't call TARGET_CREATE_INFERIOR_HOOK. + * rs6000-nat.c (super_create_inferior): New variable. + (rs6000_create_inferior): Make static. Adapt argument list. Call + original version of create_inferior via super_create_inferior. + (_initialize_core_rs6000): Install to_create_inferior target method. + 2007-04-27 Ulrich Weigand * aix-thread.c (aix_thread_xfer_memory): Replace by ... diff --git a/gdb/config/rs6000/nm-rs6000.h b/gdb/config/rs6000/nm-rs6000.h index 9690491189..2d8542b78d 100644 --- a/gdb/config/rs6000/nm-rs6000.h +++ b/gdb/config/rs6000/nm-rs6000.h @@ -64,8 +64,3 @@ extern char *xcoff_solib_address (CORE_ADDR); /* A normal waitstatus. Let the usual macros deal with it. */ \ 0) -/* Notice when a new child process is started. */ - -#define TARGET_CREATE_INFERIOR_HOOK rs6000_create_inferior -extern void rs6000_create_inferior (int); - diff --git a/gdb/fork-child.c b/gdb/fork-child.c index 9a193cd28d..37fe9274b2 100644 --- a/gdb/fork-child.c +++ b/gdb/fork-child.c @@ -398,11 +398,6 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env, /* We are now in the child process of interest, having exec'd the correct program, and are poised at the first instruction of the new program. */ - - /* Allow target dependent code to play with the new process. This - might be used to have target-specific code initialize a variable - in the new process prior to executing the first instruction. */ - TARGET_CREATE_INFERIOR_HOOK (pid); } /* Accept NTRAPS traps from the inferior. */ diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index 986f9a0cc8..365463a1dd 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -999,14 +999,18 @@ vmap_exec (void) /* Set the current architecture from the host running GDB. Called when starting a child process. */ -void -rs6000_create_inferior (int pid) +static void (*super_create_inferior) (char *exec_file, char *allargs, + char **env, int from_tty); +static void +rs6000_create_inferior (char *exec_file, char *allargs, char **env, int from_tty) { enum bfd_architecture arch; unsigned long mach; bfd abfd; struct gdbarch_info info; + super_create_inferior (exec_file, allargs, env, from_tty); + if (__power_rs ()) { arch = bfd_arch_rs6000; @@ -1250,6 +1254,10 @@ _initialize_core_rs6000 (void) t->to_fetch_registers = rs6000_fetch_inferior_registers; t->to_store_registers = rs6000_store_inferior_registers; t->to_xfer_partial = rs6000_xfer_partial; + + super_create_inferior = t->to_create_inferior; + t->to_create_inferior = rs6000_create_inferior; + add_target (t); /* Initialize hook in rs6000-tdep.c for determining the TOC address diff --git a/gdb/target.h b/gdb/target.h index d9f1ca17ce..2420b2ed76 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1112,12 +1112,6 @@ extern void (*deprecated_target_new_objfile_hook) (struct objfile *); #define target_get_thread_local_address_p() \ (target_get_thread_local_address != NULL) -/* Hook to call target dependent code just after inferior target process has - started. */ - -#ifndef TARGET_CREATE_INFERIOR_HOOK -#define TARGET_CREATE_INFERIOR_HOOK(PID) -#endif /* Hardware watchpoint interfaces. */