* fork-child.c (fork_inferior): Set inferior_pid before calling
authorJim Kingdon <jkingdon@engr.sgi.com>
Wed, 27 Oct 1993 19:30:27 +0000 (19:30 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Wed, 27 Oct 1993 19:30:27 +0000 (19:30 +0000)
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.

gdb/ChangeLog
gdb/config/i386/tm-i386m3.h
gdb/config/mips/tm-mipsm3.h
gdb/config/nm-m3.h
gdb/config/ns32k/tm-ns32km3.h
gdb/fork-child.c
gdb/m3-nat.c
gdb/procfs.c

index 07339615731e1b23f1f8a057117b4a580effa465..7408de3621019dcf27bb1a3c39ad1f47ae9ab554 100644 (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)
index f05081cb3c4870b378ae257da5828b72756fb9ca..e39acc1f4b1088de5fa6a4bc06e906b11c1b1a63 100644 (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.  */
 
index 8bad36519ff93268713e7ca28415e40cb4a2e7d3..cf41679571e65faec5e0f475cff582685c2a251a 100644 (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>
  */
index 0d12424fa8abc5c7b91a5b27be55a428c3173f5a..07bf625d8a7889deca06a4f867702038be2c39ef 100644 (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
index e123759b2a2231f4ac0c98cf628b1a52bb2b8e9f..6cf61618a2c8ddfb9a15ae1d89b505301846894a 100644 (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.
index e5a16c523cc86de0f6ee769a48afb4962a6bfe11..62c7a3a1e197fbb20ae44f3014553993b992a71f 100644 (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
 }
index fcb7b2057eecb57d1746b97002d4bfc8a27a4e0e..f0707d4a5a8c2f18335f9b7b4c34061004b96bfd 100644 (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 ()
index e667c82b634d2a4f513eb98a12ceb990fbe10c63..1c3b6d958083e7321473a637b44547c44d55bd91 100644 (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);
 }
 
 /*