* fork-child.c (fork_inferior): Set inferior_pid before calling
init_trace_fun. Move the code which gets us through the shell to new function startup_inferior. * inferior.h: Declare startup_inferior. * procfs.c (procfs_init_inferior), inftarg.c (ptrace_him): Call startup_inferior. * m3-nat.c (m3_trace_him): Call intercept_exec_calls. * config/nm-m3.h: Don't define STARTUP_INFERIOR. * config/i386/tm-i386m3.h, config/ns32k/tm-ns32k.h, config/mips/tm-mipsm3.h: Don't define START_INFERIOR_TRAPS_EXPECTED.
This commit is contained in:
parent
73e7e44744
commit
bc28a06cc1
8 changed files with 36 additions and 55 deletions
|
@ -1,5 +1,16 @@
|
||||||
Wed Oct 27 13:43:07 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
Wed Oct 27 13:43:07 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||||
|
|
||||||
|
* fork-child.c (fork_inferior): Set inferior_pid before calling
|
||||||
|
init_trace_fun. Move the code which gets us through the shell
|
||||||
|
to new function startup_inferior.
|
||||||
|
* inferior.h: Declare startup_inferior.
|
||||||
|
* procfs.c (procfs_init_inferior), inftarg.c (ptrace_him):
|
||||||
|
Call startup_inferior.
|
||||||
|
* m3-nat.c (m3_trace_him): Call intercept_exec_calls.
|
||||||
|
* config/nm-m3.h: Don't define STARTUP_INFERIOR.
|
||||||
|
* config/i386/tm-i386m3.h, config/ns32k/tm-ns32k.h,
|
||||||
|
config/mips/tm-mipsm3.h: Don't define START_INFERIOR_TRAPS_EXPECTED.
|
||||||
|
|
||||||
* m68k-stub.c: Change vector 13 from SIGFPE to SIGBUS.
|
* m68k-stub.c: Change vector 13 from SIGFPE to SIGBUS.
|
||||||
|
|
||||||
Tue Oct 26 22:05:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
|
Tue Oct 26 22:05:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
|
||||||
|
|
|
@ -40,17 +40,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
/* we can do it */
|
/* we can do it */
|
||||||
#define ATTACH_DETACH 1
|
#define ATTACH_DETACH 1
|
||||||
|
|
||||||
/* number of traps that happen between exec'ing the shell
|
|
||||||
* to run an inferior, and when we finally get to
|
|
||||||
* the inferior code. This is 2 on most implementations.
|
|
||||||
*
|
|
||||||
* On Mach 3.0 it is the number of exec() system calls before
|
|
||||||
* the task contains the debugged program. It is always 2 when
|
|
||||||
* using the shell to start up the program.
|
|
||||||
*/
|
|
||||||
#undef START_INFERIOR_TRAPS_EXPECTED
|
|
||||||
#define START_INFERIOR_TRAPS_EXPECTED 2
|
|
||||||
|
|
||||||
/* Define this if the C compiler puts an underscore at the front
|
/* Define this if the C compiler puts an underscore at the front
|
||||||
of external names before giving them to the linker. */
|
of external names before giving them to the linker. */
|
||||||
|
|
||||||
|
|
|
@ -56,14 +56,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include "mips/tm-mips.h"
|
#include "mips/tm-mips.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* On Mach 3.0 this is the number of exec() system calls before
|
|
||||||
* the task contains the debugged program. It is always 2 when
|
|
||||||
* using the shell to start up the program.
|
|
||||||
*/
|
|
||||||
#undef START_INFERIOR_TRAPS_EXPECTED
|
|
||||||
#define START_INFERIOR_TRAPS_EXPECTED 2
|
|
||||||
|
|
||||||
/* Address of end of user stack space.
|
/* Address of end of user stack space.
|
||||||
* for MACH, see <machine/vmparam.h>
|
* for MACH, see <machine/vmparam.h>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -39,10 +39,6 @@ extern thread_t current_thread;
|
||||||
*/
|
*/
|
||||||
extern int must_suspend_thread;
|
extern int must_suspend_thread;
|
||||||
|
|
||||||
/* Startup the inferior task and suspend it after the correct code is loaded */
|
|
||||||
|
|
||||||
#define STARTUP_INFERIOR(x) intercept_exec_calls(x)
|
|
||||||
|
|
||||||
#define PREPARE_TO_PROCEED(select_it) mach3_prepare_to_proceed(select_it)
|
#define PREPARE_TO_PROCEED(select_it) mach3_prepare_to_proceed(select_it)
|
||||||
|
|
||||||
/* Try to get the privileged host port for authentication to machid
|
/* Try to get the privileged host port for authentication to machid
|
||||||
|
|
|
@ -43,17 +43,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
/* we can do it */
|
/* we can do it */
|
||||||
#define ATTACH_DETACH 1
|
#define ATTACH_DETACH 1
|
||||||
|
|
||||||
/* number of traps that happen between exec'ing the shell
|
|
||||||
* to run an inferior, and when we finally get to
|
|
||||||
* the inferior code. This is 2 on most implementations.
|
|
||||||
*
|
|
||||||
* On Mach 3.0 it is the number of exec() system calls before
|
|
||||||
* the task contains the debugged program. It is always 2 when
|
|
||||||
* using the shell to start up the program.
|
|
||||||
*/
|
|
||||||
#undef START_INFERIOR_TRAPS_EXPECTED
|
|
||||||
#define START_INFERIOR_TRAPS_EXPECTED 2
|
|
||||||
|
|
||||||
#define INVALID_FLOAT(p, s) isa_NAN(p, s)
|
#define INVALID_FLOAT(p, s) isa_NAN(p, s)
|
||||||
|
|
||||||
/* Address of end of stack space.
|
/* Address of end of stack space.
|
||||||
|
|
|
@ -60,8 +60,6 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun)
|
||||||
char *shell_file;
|
char *shell_file;
|
||||||
static char default_shell_file[] = SHELL_FILE;
|
static char default_shell_file[] = SHELL_FILE;
|
||||||
int len;
|
int len;
|
||||||
int pending_execs;
|
|
||||||
int terminal_initted;
|
|
||||||
/* Set debug_fork then attach to the child while it sleeps, to debug. */
|
/* Set debug_fork then attach to the child while it sleeps, to debug. */
|
||||||
static int debug_fork = 0;
|
static int debug_fork = 0;
|
||||||
/* This is set to the result of setpgrp, which if vforked, will be visible
|
/* This is set to the result of setpgrp, which if vforked, will be visible
|
||||||
|
@ -241,28 +239,35 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun)
|
||||||
|
|
||||||
init_thread_list();
|
init_thread_list();
|
||||||
|
|
||||||
|
inferior_pid = pid; /* Needed for wait_for_inferior stuff below */
|
||||||
|
|
||||||
/* Now that we have a child process, make it our target, and
|
/* Now that we have a child process, make it our target, and
|
||||||
initialize anything target-vector-specific that needs initializing. */
|
initialize anything target-vector-specific that needs initializing. */
|
||||||
(*init_trace_fun)(pid);
|
(*init_trace_fun)(pid);
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
#ifdef SOLIB_CREATE_INFERIOR_HOOK
|
||||||
|
SOLIB_CREATE_INFERIOR_HOOK (pid);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Accept NTRAPS traps from the inferior. */
|
||||||
|
|
||||||
|
void
|
||||||
|
startup_inferior (ntraps)
|
||||||
|
int ntraps;
|
||||||
|
{
|
||||||
|
int pending_execs = ntraps;
|
||||||
|
int terminal_initted;
|
||||||
|
|
||||||
/* The process was started by the fork that created it,
|
/* The process was started by the fork that created it,
|
||||||
but it will have stopped one instruction after execing the shell.
|
but it will have stopped one instruction after execing the shell.
|
||||||
Here we must get it up to actual execution of the real program. */
|
Here we must get it up to actual execution of the real program. */
|
||||||
|
|
||||||
inferior_pid = pid; /* Needed for wait_for_inferior stuff below */
|
|
||||||
|
|
||||||
clear_proceed_status ();
|
clear_proceed_status ();
|
||||||
|
|
||||||
/* We will get a trace trap after one instruction.
|
|
||||||
Continue it automatically. Eventually (after shell does an exec)
|
|
||||||
it will get another trace trap. Then insert breakpoints and continue. */
|
|
||||||
|
|
||||||
#ifdef START_INFERIOR_TRAPS_EXPECTED
|
|
||||||
pending_execs = START_INFERIOR_TRAPS_EXPECTED;
|
|
||||||
#else
|
|
||||||
pending_execs = 2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
init_wait_for_inferior ();
|
init_wait_for_inferior ();
|
||||||
|
|
||||||
terminal_initted = 0;
|
terminal_initted = 0;
|
||||||
|
@ -301,11 +306,4 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stop_soon_quietly = 0;
|
stop_soon_quietly = 0;
|
||||||
|
|
||||||
/* 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. */
|
|
||||||
#ifdef SOLIB_CREATE_INFERIOR_HOOK
|
|
||||||
SOLIB_CREATE_INFERIOR_HOOK (pid);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1143,6 +1143,9 @@ m3_trace_him (pid)
|
||||||
setup_exception_port ();
|
setup_exception_port ();
|
||||||
|
|
||||||
xx_debug ("Now the debugged task is created\n");
|
xx_debug ("Now the debugged task is created\n");
|
||||||
|
|
||||||
|
/* One trap to exec the shell, one to exec the program being debugged. */
|
||||||
|
intercept_exec_calls (2);
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_exception_port ()
|
setup_exception_port ()
|
||||||
|
|
|
@ -1523,6 +1523,9 @@ procfs_init_inferior (pid)
|
||||||
|
|
||||||
create_procinfo (pid);
|
create_procinfo (pid);
|
||||||
add_thread (pid); /* Setup initial thread */
|
add_thread (pid); /* Setup initial thread */
|
||||||
|
|
||||||
|
/* One trap to exec the shell, one to exec the program being debugged. */
|
||||||
|
startup_inferior (2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue