*** empty log message ***
[binutils-gdb.git] / gdb / fork-child.c
index 03f5e28263b1197e553e655d9331aa02ac3095fc..2b085ffe6aef8b9ed275c54ad1044f0b21b00d72 100644 (file)
@@ -1,7 +1,8 @@
 /* Fork a Unix child process, and set up to debug it, for GDB.
 
    Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2001, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -22,8 +23,8 @@
 
 #include "defs.h"
 #include "gdb_string.h"
-#include "frame.h"             /* required by inferior.h */
 #include "inferior.h"
+#include "terminal.h"
 #include "target.h"
 #include "gdb_wait.h"
 #include "gdb_vfork.h"
@@ -138,6 +139,7 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env,
   int shell = 0;
   static char **argv;
   const char *inferior_io_terminal = get_inferior_io_terminal ();
+  struct inferior *inf;
 
   /* If no exec file handed to us, get it from the exec-file command
      -- with a good, common error message if none is specified.  */
@@ -176,6 +178,7 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env,
         assuming that every other character is a separate
         argument.  */
       int argc = (strlen (allargs) + 1) / 2 + 2;
+
       argv = (char **) xmalloc (argc * sizeof (*argv));
       argv[0] = exec_file;
       breakup_args (allargs, &argv[1]);
@@ -395,11 +398,15 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env,
   if (!have_inferiors ())
     init_thread_list ();
 
-  add_inferior (pid);
+  inf = current_inferior ();
+
+  inferior_appeared (inf, pid);
 
   /* Needed for wait_for_inferior stuff below.  */
   inferior_ptid = pid_to_ptid (pid);
 
+  new_tty_postfork ();
+
   /* We have something that executes now.  We'll be running through
      the shell at this point, but the pid shouldn't change.  Targets
      supporting MT should fill this task's ptid with more data as soon
@@ -446,7 +453,7 @@ startup_inferior (int ntraps)
 
       struct target_waitstatus ws;
       memset (&ws, 0, sizeof (ws));
-      event_ptid = target_wait (resume_ptid, &ws);
+      event_ptid = target_wait (resume_ptid, &ws, 0);
 
       if (ws.kind == TARGET_WAITKIND_IGNORE)
        /* The inferior didn't really stop, keep waiting.  */