This commit was generated by cvs2svn to track changes on a CVS vendor
[deliverable/binutils-gdb.git] / gdb / inftarg.c
index 70d854125f4d86f1e7276038d99f4ae474f7a0a0..53c53e4f5a791076addb320f4b0a0a20221d3ad4 100644 (file)
@@ -2,26 +2,27 @@
    Copyright 1990-1996, 1998, 1999 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
-## Contains temporary hacks..
+   ## Contains temporary hacks..
 
-This file is part of GDB.
+   This file is part of GDB.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
-#include "frame.h"  /* required by inferior.h */
+#include "frame.h"             /* required by inferior.h */
 #include "inferior.h"
 #include "target.h"
 #include "gdbcore.h"
@@ -31,90 +32,64 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include <sys/types.h>
 #include <fcntl.h>
 
-#ifdef HAVE_WAIT_H
-# include <wait.h>
-#else
-# ifdef HAVE_SYS_WAIT_H
-#  include <sys/wait.h>
-# endif
-#endif
-
-/* "wait.h" fills in the gaps left by <wait.h> */
-#include "wait.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
+#include "gdb_wait.h"
 
-extern struct symtab_and_line *
-child_enable_exception_callback PARAMS ((enum exception_event_kind, int));
+extern struct symtab_and_line *child_enable_exception_callback (enum
+                                                               exception_event_kind,
+                                                               int);
 
-extern struct exception_event_record *
-child_get_current_exception_event PARAMS ((void));
+extern struct exception_event_record
+  *child_get_current_exception_event (void);
 
-extern void _initialize_inftarg PARAMS ((void));
+extern void _initialize_inftarg (void);
 
-static void
-child_prepare_to_store PARAMS ((void));
+static void child_prepare_to_store (void);
 
 #ifndef CHILD_WAIT
-static int child_wait PARAMS ((int, struct target_waitstatus *));
+static int child_wait (int, struct target_waitstatus *);
 #endif /* CHILD_WAIT */
 
 #if !defined(CHILD_POST_WAIT)
-void
-child_post_wait PARAMS ((int, int));
+void child_post_wait (int, int);
 #endif
 
-static void child_open PARAMS ((char *, int));
+static void child_open (char *, int);
 
-static void
-child_files_info PARAMS ((struct target_ops *));
+static void child_files_info (struct target_ops *);
 
-static void
-child_detach PARAMS ((char *, int));
+static void child_detach (char *, int);
 
-static void
-child_detach_from_process PARAMS ((int, char *, int, int));
+static void child_detach_from_process (int, char *, int, int);
 
-static void
-child_attach PARAMS ((char *, int));
+static void child_attach (char *, int);
 
-static void
-child_attach_to_process PARAMS ((char *, int, int));
+static void child_attach_to_process (char *, int, int);
 
 #if !defined(CHILD_POST_ATTACH)
-extern void child_post_attach PARAMS ((int));
+extern void child_post_attach (int);
 #endif
 
-static void
-child_require_attach PARAMS ((char *, int));
+static void child_require_attach (char *, int);
 
-static void
-child_require_detach PARAMS ((int, char *, int));
+static void child_require_detach (int, char *, int);
 
-static void
-ptrace_me PARAMS ((void));
+static void ptrace_me (void);
 
-static void 
-ptrace_him PARAMS ((int));
+static void ptrace_him (int);
 
-static void 
-child_create_inferior PARAMS ((char *, char *, char **));
+static void child_create_inferior (char *, char *, char **);
 
-static void
-child_mourn_inferior PARAMS ((void));
+static void child_mourn_inferior (void);
 
-static int
-child_can_run PARAMS ((void));
+static int child_can_run (void);
 
-static void
-child_stop PARAMS ((void));
+static void child_stop (void);
 
 #ifndef CHILD_THREAD_ALIVE
-int child_thread_alive PARAMS ((int));
+int child_thread_alive (int);
 #endif
 
-static void init_child_ops PARAMS ((void));
+static void init_child_ops (void);
 
 extern char **environ;
 
@@ -127,14 +102,14 @@ int child_suppress_run = 0;       /* Non-zero if inftarg should pretend not to
 
 #ifndef CHILD_WAIT
 
-/*##*/
+/*## */
 /* Enable HACK for ttrace work.  In
  * infttrace.c/require_notification_of_events,
  * this is set to 0 so that the loop in child_wait
  * won't loop.
  */
 int not_same_real_pid = 1;
-/*##*/
+/*## */
 
 
 /* Wait for child to do something.  Return pid of child, or -1 in case
@@ -148,101 +123,103 @@ child_wait (pid, ourstatus)
   int save_errno;
   int status;
   char *execd_pathname = NULL;
-  int  exit_status;
-  int  related_pid;
-  int  syscall_id;
-  enum target_waitkind  kind;
-
-  do {
-    set_sigint_trap(); /* Causes SIGINT to be passed on to the
-                          attached process. */
-    set_sigio_trap ();
+  int exit_status;
+  int related_pid;
+  int syscall_id;
+  enum target_waitkind kind;
 
-    pid = ptrace_wait (inferior_pid, &status);
+  do
+    {
+      set_sigint_trap ();      /* Causes SIGINT to be passed on to the
+                                  attached process. */
+      set_sigio_trap ();
 
-    save_errno = errno;
+      pid = ptrace_wait (inferior_pid, &status);
 
-    clear_sigio_trap ();
+      save_errno = errno;
 
-    clear_sigint_trap();
+      clear_sigio_trap ();
 
-    if (pid == -1)
-      {
-       if (save_errno == EINTR)
-         continue;
+      clear_sigint_trap ();
 
-       fprintf_unfiltered (gdb_stderr, "Child process unexpectedly missing: %s.\n",
-                safe_strerror (save_errno));
+      if (pid == -1)
+       {
+         if (save_errno == EINTR)
+           continue;
 
-       /* Claim it exited with unknown signal.  */
-       ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-       ourstatus->value.sig = TARGET_SIGNAL_UNKNOWN;
-        return -1;
-      }
+         fprintf_unfiltered (gdb_stderr, "Child process unexpectedly missing: %s.\n",
+                             safe_strerror (save_errno));
 
-    /* Did it exit?
-     */
-    if (target_has_exited (pid, status, &exit_status))
-      {
-        /* ??rehrauer: For now, ignore this. */
-        continue;
-      }
+         /* Claim it exited with unknown signal.  */
+         ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
+         ourstatus->value.sig = TARGET_SIGNAL_UNKNOWN;
+         return -1;
+       }
 
-    if (!target_thread_alive (pid))
-      {
-        ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-        return pid;
-      }
-      
-    if (target_has_forked (pid, &related_pid)
-        && ((pid == inferior_pid) || (related_pid == inferior_pid)))
-      {
-        ourstatus->kind = TARGET_WAITKIND_FORKED;
-        ourstatus->value.related_pid = related_pid;
-        return pid;
-      }
-
-    if (target_has_vforked (pid, &related_pid)
-        && ((pid == inferior_pid) || (related_pid == inferior_pid)))
-      {
-        ourstatus->kind = TARGET_WAITKIND_VFORKED;
-        ourstatus->value.related_pid = related_pid;
-        return pid;
-      }
-
-    if (target_has_execd (pid, &execd_pathname))
-      {
-        /* Are we ignoring initial exec events?  (This is likely because
-           we're in the process of starting up the inferior, and another
-           (older) mechanism handles those.)  If so, we'll report this
-           as a regular stop, not an exec.
-           */
-        if (inferior_ignoring_startup_exec_events)
-          {
-            inferior_ignoring_startup_exec_events--;
-          }
-        else
-          {
-            ourstatus->kind = TARGET_WAITKIND_EXECD;
-            ourstatus->value.execd_pathname = execd_pathname;
-            return pid;
-          }
-      }
-
-    /* All we must do with these is communicate their occurrence
-       to wait_for_inferior...
+      /* Did it exit?
        */
-    if (target_has_syscall_event (pid, &kind, &syscall_id))
-      {
-        ourstatus->kind = kind;
-        ourstatus->value.syscall_id = syscall_id;
-        return pid;
-      }
-
-/*##  } while (pid != inferior_pid); ##*/ /* Some other child died or stopped */
+      if (target_has_exited (pid, status, &exit_status))
+       {
+         /* ??rehrauer: For now, ignore this. */
+         continue;
+       }
+
+      if (!target_thread_alive (pid))
+       {
+         ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+         return pid;
+       }
+
+      if (target_has_forked (pid, &related_pid)
+         && ((pid == inferior_pid) || (related_pid == inferior_pid)))
+       {
+         ourstatus->kind = TARGET_WAITKIND_FORKED;
+         ourstatus->value.related_pid = related_pid;
+         return pid;
+       }
+
+      if (target_has_vforked (pid, &related_pid)
+         && ((pid == inferior_pid) || (related_pid == inferior_pid)))
+       {
+         ourstatus->kind = TARGET_WAITKIND_VFORKED;
+         ourstatus->value.related_pid = related_pid;
+         return pid;
+       }
+
+      if (target_has_execd (pid, &execd_pathname))
+       {
+         /* Are we ignoring initial exec events?  (This is likely because
+            we're in the process of starting up the inferior, and another
+            (older) mechanism handles those.)  If so, we'll report this
+            as a regular stop, not an exec.
+          */
+         if (inferior_ignoring_startup_exec_events)
+           {
+             inferior_ignoring_startup_exec_events--;
+           }
+         else
+           {
+             ourstatus->kind = TARGET_WAITKIND_EXECD;
+             ourstatus->value.execd_pathname = execd_pathname;
+             return pid;
+           }
+       }
+
+      /* All we must do with these is communicate their occurrence
+         to wait_for_inferior...
+       */
+      if (target_has_syscall_event (pid, &kind, &syscall_id))
+       {
+         ourstatus->kind = kind;
+         ourstatus->value.syscall_id = syscall_id;
+         return pid;
+       }
+
+      /*##  } while (pid != inferior_pid); ## *//* Some other child died or stopped */
 /* hack for thread testing */
-      } while( (pid != inferior_pid) && not_same_real_pid );
-/*##*/
+    }
+  while ((pid != inferior_pid) && not_same_real_pid);
+/*## */
 
   store_waitstatus (ourstatus, status);
   return pid;
@@ -252,15 +229,15 @@ child_wait (pid, ourstatus)
 #if !defined(CHILD_POST_WAIT)
 void
 child_post_wait (pid, wait_status)
-  int  pid;
-  int  wait_status;
+     int pid;
+     int wait_status;
 {
   /* This version of Unix doesn't require a meaningful "post wait"
      operation.
-     */
+   */
 }
 #endif
+
 
 #ifndef CHILD_THREAD_ALIVE
 
@@ -280,9 +257,9 @@ child_thread_alive (pid)
 
 static void
 child_attach_to_process (args, from_tty, after_fork)
-  char *  args;
-  int  from_tty;
-  int  after_fork;
+     char *args;
+     int from_tty;
+     int after_fork;
 {
   if (!args)
     error_no_arg ("process-id to attach");
@@ -301,7 +278,7 @@ child_attach_to_process (args, from_tty, after_fork)
     if ((pid == 0) && (args == dummy))
       error ("Illegal process-id: %s\n", args);
 
-    if (pid == getpid())               /* Trying to masturbate? */
+    if (pid == getpid ())      /* Trying to masturbate? */
       error ("I refuse to debug myself!");
 
     if (from_tty)
@@ -309,13 +286,13 @@ child_attach_to_process (args, from_tty, after_fork)
        exec_file = (char *) get_exec_file (0);
 
        if (after_fork)
-         printf_unfiltered ("Attaching after fork to %s\n", 
-                 target_pid_to_str (pid));
+         printf_unfiltered ("Attaching after fork to %s\n",
+                            target_pid_to_str (pid));
        else if (exec_file)
          printf_unfiltered ("Attaching to program: %s, %s\n", exec_file,
-                  target_pid_to_str (pid));
-        else
-          printf_unfiltered ("Attaching to %s\n", target_pid_to_str (pid));
+                            target_pid_to_str (pid));
+       else
+         printf_unfiltered ("Attaching to %s\n", target_pid_to_str (pid));
 
        gdb_flush (gdb_stdout);
       }
@@ -328,7 +305,7 @@ child_attach_to_process (args, from_tty, after_fork)
     inferior_pid = pid;
     push_target (&child_ops);
   }
-#endif  /* ATTACH_DETACH */
+#endif /* ATTACH_DETACH */
 }
 
 
@@ -345,7 +322,7 @@ child_attach (args, from_tty)
 #if !defined(CHILD_POST_ATTACH)
 void
 child_post_attach (pid)
-  int  pid;
+     int pid;
 {
   /* This version of Unix doesn't require a meaningful "post attach"
      operation by a debugger.  */
@@ -358,14 +335,14 @@ child_require_attach (args, from_tty)
      int from_tty;
 {
   child_attach_to_process (args, from_tty, 1);
-} 
+}
 
 static void
 child_detach_from_process (pid, args, from_tty, after_fork)
-  int  pid;
-  char *  args;
-  int  from_tty;
-  int  after_fork;
+     int pid;
+     char *args;
+     int from_tty;
+     int after_fork;
 {
 #ifdef ATTACH_DETACH
   {
@@ -376,12 +353,12 @@ child_detach_from_process (pid, args, from_tty, after_fork)
        char *exec_file = get_exec_file (0);
        if (exec_file == 0)
          exec_file = "";
-        if (after_fork)
-          printf_unfiltered ("Detaching after fork from %s\n",
-                             target_pid_to_str (pid));
-        else
+       if (after_fork)
+         printf_unfiltered ("Detaching after fork from %s\n",
+                            target_pid_to_str (pid));
+       else
          printf_unfiltered ("Detaching from program: %s, %s\n", exec_file,
-                            target_pid_to_str (pid));
+                            target_pid_to_str (pid));
        gdb_flush (gdb_stdout);
       }
     if (args)
@@ -417,9 +394,9 @@ child_detach (args, from_tty)
 
 static void
 child_require_detach (pid, args, from_tty)
-  int  pid;
-  char *  args;
-  int  from_tty;
+     int pid;
+     char *args;
+     int from_tty;
 {
   child_detach_from_process (pid, args, from_tty, 1);
 }
@@ -446,7 +423,7 @@ child_files_info (ignore)
      struct target_ops *ignore;
 {
   printf_unfiltered ("\tUsing the running image of %s %s.\n",
-         attach_flag? "attached": "child", target_pid_to_str (inferior_pid));
+      attach_flag ? "attached" : "child", target_pid_to_str (inferior_pid));
 }
 
 /* ARGSUSED */
@@ -471,7 +448,7 @@ ptrace_me ()
 /* Stub function which causes the GDB that runs it, to start ptrace-ing
    the child process.  */
 
-static void 
+static void
 ptrace_him (pid)
      int pid;
 {
@@ -481,7 +458,7 @@ ptrace_him (pid)
      between the parent and child processes after the debugger
      forks, and before the child execs the debuggee program.  This
      call basically gives permission for the child to exec.
-     */
+   */
 
   target_acknowledge_created_inferior (pid);
 
@@ -493,7 +470,7 @@ ptrace_him (pid)
 
   /* On some targets, there must be some explicit actions taken after
      the inferior has been started up.
-     */
+   */
   target_post_startup_inferior (pid);
 }
 
@@ -508,70 +485,10 @@ child_create_inferior (exec_file, allargs, env)
      char *allargs;
      char **env;
 {
-
 #ifdef HPUXHPPA
-  char *tryname;
-  char *shell_file;
-  char *p;
-  char *p1;
-  char *path = getenv ("PATH");
-  int len;
-  struct stat statbuf;
-
-  /* On HP-UX, we have a possible bad interaction between
-   * the start-up-with-shell code and our catch-fork/catch-exec
-   * logic. To avoid the bad interaction, we start up with the
-   * C shell ("csh") and pass it the "-f" flag (fast start-up,
-   * don't run .cshrc code).
-   * See further comments in inferior.h toward the bottom
-   * (STARTUP_WITH_SHELL flag) and in fork-child.c
-   */
-
-  /* Rather than passing in a hard-wired path like "/bin/csh",
-   * we look down the PATH to find csh. I took this code from
-   * procfs.c, which is the file in the Sun-specific part of GDB
-   * analogous to inftarg.c. See procfs.c for more detailed 
-   * comments. - RT
-   */
-  shell_file = "csh";
-  if (path == NULL)
-    path = "/bin:/usr/bin";
-  tryname = alloca (strlen (path) + strlen (shell_file) + 2);
-  for (p = path; p != NULL; p = p1 ? p1 + 1: NULL)
-    {
-    p1 = strchr (p, ':');
-    if (p1 != NULL)
-      len = p1 - p;
-    else
-      len = strlen (p);
-    strncpy (tryname, p, len);
-    tryname[len] = '\0';
-    strcat (tryname, "/");
-    strcat (tryname, shell_file);
-    if (access (tryname, X_OK) < 0)
-      continue;
-    if (stat (tryname, &statbuf) < 0)
-      continue;
-    if (!S_ISREG (statbuf.st_mode))
-      /* We certainly need to reject directories.  I'm not quite
-         as sure about FIFOs, sockets, etc., but I kind of doubt
-         that people want to exec() these things.  */
-      continue;
-      break;
-    }
-  if (p == NULL)
-    /* Not found. I replaced the error() which existed in procfs.c
-     * with simply passing in NULL and hoping fork_inferior() 
-     * can deal with it. - RT
-     */ 
-    /* error ("Can't find shell %s in PATH", shell_file); */
-    shell_file = NULL;
-  else
-    shell_file = tryname;
-
   fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, pre_fork_inferior, NULL);
 #else
- fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, NULL, NULL);
 fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, NULL, NULL);
 #endif
   /* We are at the first instruction we care about.  */
   /* Pedal to the metal... */
@@ -581,36 +498,36 @@ child_create_inferior (exec_file, allargs, env)
 #if !defined(CHILD_POST_STARTUP_INFERIOR)
 void
 child_post_startup_inferior (pid)
-  int  pid;
+     int pid;
 {
   /* This version of Unix doesn't require a meaningful "post startup inferior"
      operation by a debugger.
-     */
+   */
 }
 #endif
 
 #if !defined(CHILD_ACKNOWLEDGE_CREATED_INFERIOR)
 void
 child_acknowledge_created_inferior (pid)
-  int  pid;
+     int pid;
 {
   /* This version of Unix doesn't require a meaningful "acknowledge created inferior"
      operation by a debugger.
-     */
+   */
 }
 #endif
 
 
 void
 child_clone_and_follow_inferior (child_pid, followed_child)
-  int  child_pid;
-  int  *followed_child;
+     int child_pid;
+     int *followed_child;
 {
   clone_and_follow_inferior (child_pid, followed_child);
 
   /* Don't resume CHILD_PID; it's stopped where it ought to be, until
      the decision gets made elsewhere how to continue it.
-     */
+   */
 }
 
 
@@ -620,7 +537,7 @@ child_post_follow_inferior_by_clone ()
 {
   /* This version of Unix doesn't require a meaningful "post follow inferior"
      operation by a clone debugger.
-     */
+   */
 }
 #endif
 
@@ -679,11 +596,11 @@ child_has_forked (pid, child_pid)
 #if !defined(CHILD_HAS_VFORKED)
 int
 child_has_vforked (pid, child_pid)
-  int  pid;
-  int *  child_pid;
+     int pid;
+     int *child_pid;
 {
   /* This version of Unix doesn't support notification of vfork events.
-     */
+   */
   return 0;
 }
 #endif
@@ -696,7 +613,7 @@ child_can_follow_vfork_prior_to_exec ()
   /* This version of Unix doesn't support notification of vfork events.
      However, if it did, it probably wouldn't allow vforks to be followed
      before the following exec.
-     */
+   */
   return 0;
 }
 #endif
@@ -705,14 +622,14 @@ child_can_follow_vfork_prior_to_exec ()
 #if !defined(CHILD_POST_FOLLOW_VFORK)
 void
 child_post_follow_vfork (parent_pid, followed_parent, child_pid, followed_child)
-  int  parent_pid;
-  int  followed_parent;
-  int  child_pid;
-  int  followed_child;
+     int parent_pid;
+     int followed_parent;
+     int child_pid;
+     int followed_child;
 {
   /* This version of Unix doesn't require a meaningful "post follow vfork"
      operation by a clone debugger.
-     */
+   */
 }
 #endif
 
@@ -739,11 +656,11 @@ child_remove_exec_catchpoint (pid)
 #if !defined(CHILD_HAS_EXECD)
 int
 child_has_execd (pid, execd_pathname)
-  int  pid;
-  char **  execd_pathname;
+     int pid;
+     char **execd_pathname;
 {
   /* This version of Unix doesn't support notification of exec events.
-     */
+   */
   return 0;
 }
 #endif
@@ -754,7 +671,7 @@ int
 child_reported_exec_events_per_exec_call ()
 {
   /* This version of Unix doesn't support notification of exec events.
-     */
+   */
   return 1;
 }
 #endif
@@ -763,12 +680,12 @@ child_reported_exec_events_per_exec_call ()
 #if !defined(CHILD_HAS_SYSCALL_EVENT)
 int
 child_has_syscall_event (pid, kind, syscall_id)
-  int  pid;
-  enum target_waitkind *  kind;
-  int *  syscall_id;
+     int pid;
+     enum target_waitkind *kind;
+     int *syscall_id;
 {
   /* This version of Unix doesn't support notification of syscall events.
-     */
+   */
   return 0;
 }
 #endif
@@ -777,9 +694,9 @@ child_has_syscall_event (pid, kind, syscall_id)
 #if !defined(CHILD_HAS_EXITED)
 int
 child_has_exited (pid, wait_status, exit_status)
-  int  pid;
-  int  wait_status;
-  int *  exit_status;
+     int pid;
+     int wait_status;
+     int *exit_status;
 {
   if (WIFEXITED (wait_status))
     {
@@ -789,12 +706,12 @@ child_has_exited (pid, wait_status, exit_status)
 
   if (WIFSIGNALED (wait_status))
     {
-      *exit_status = 0;  /* ?? Don't know what else to say here. */
+      *exit_status = 0;                /* ?? Don't know what else to say here. */
       return 1;
     }
 
   /* ?? Do we really need to consult the event state, too?  Assume the
-   wait_state alone suffices.
+     wait_state alone suffices.
    */
   return 0;
 }
@@ -835,8 +752,8 @@ child_stop ()
 #if !defined(CHILD_ENABLE_EXCEPTION_CALLBACK)
 struct symtab_and_line *
 child_enable_exception_callback (kind, enable)
-  enum exception_event_kind kind;
-  int enable;
+     enum exception_event_kind kind;
+     int enable;
 {
   return (struct symtab_and_line *) NULL;
 }
@@ -854,27 +771,35 @@ child_get_current_exception_event ()
 #if !defined(CHILD_PID_TO_EXEC_FILE)
 char *
 child_pid_to_exec_file (pid)
-  int  pid;
+     int pid;
 {
   /* This version of Unix doesn't support translation of a process ID
      to the filename of the executable file.
-     */
+   */
   return NULL;
 }
 #endif
 
 char *
 child_core_file_to_sym_file (core)
-  char *  core;
+     char *core;
 {
   /* The target stratum for a running executable need not support
      this operation.
-     */
+   */
   return NULL;
 }
+\f
 
+#if !defined(CHILD_PID_TO_STR)
+char *
+child_pid_to_str (pid)
+     int pid;
+{
+  return normal_pid_to_str (pid);
+}
+#endif
 
-\f
 static void
 init_child_ops ()
 {
@@ -925,6 +850,7 @@ init_child_ops ()
   child_ops.to_mourn_inferior = child_mourn_inferior;
   child_ops.to_can_run = child_can_run;
   child_ops.to_thread_alive = child_thread_alive;
+  child_ops.to_pid_to_str = child_pid_to_str;
   child_ops.to_stop = child_stop;
   child_ops.to_enable_exception_callback = child_enable_exception_callback;
   child_ops.to_get_current_exception_event = child_get_current_exception_event;
This page took 0.034789 seconds and 4 git commands to generate.