* 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:
Jim Kingdon 1993-10-27 19:30:27 +00:00
parent 73e7e44744
commit bc28a06cc1
8 changed files with 36 additions and 55 deletions

View File

@ -1,5 +1,16 @@
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.
Tue Oct 26 22:05:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com)

View File

@ -40,17 +40,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* we can do it */
#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
of external names before giving them to the linker. */

View File

@ -56,14 +56,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#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.
* for MACH, see <machine/vmparam.h>
*/

View File

@ -39,10 +39,6 @@ extern thread_t current_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)
/* Try to get the privileged host port for authentication to machid

View File

@ -43,17 +43,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* we can do it */
#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)
/* Address of end of stack space.

View File

@ -60,8 +60,6 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun)
char *shell_file;
static char default_shell_file[] = SHELL_FILE;
int len;
int pending_execs;
int terminal_initted;
/* Set debug_fork then attach to the child while it sleeps, to debug. */
static int debug_fork = 0;
/* 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();
inferior_pid = pid; /* Needed for wait_for_inferior stuff below */
/* Now that we have a child process, make it our target, and
initialize anything target-vector-specific that needs initializing. */
(*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,
but it will have stopped one instruction after execing the shell.
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 ();
/* 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 ();
terminal_initted = 0;
@ -301,11 +306,4 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun)
}
}
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
}

View File

@ -1143,6 +1143,9 @@ m3_trace_him (pid)
setup_exception_port ();
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 ()

View File

@ -1523,6 +1523,9 @@ procfs_init_inferior (pid)
create_procinfo (pid);
add_thread (pid); /* Setup initial thread */
/* One trap to exec the shell, one to exec the program being debugged. */
startup_inferior (2);
}
/*