Fix a crash in jit.c
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / foll-exec.c
index 1b760903dd70a2e9b22103a131bd9439815c8d49..d377d6300547134d0d8859d3b08632558a3d7fd4 100644 (file)
@@ -1,43 +1,67 @@
+/* This test program is part of GDB, the GNU debugger.
+
+   Copyright 1997-2018 Free Software Foundation, Inc.
+
+   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 3 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.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
 
+#include <limits.h>
 
-int  global_i = 100;
+int global_i = 100;
 
-#ifdef PROTOTYPES
-int main (void)
-#else
-main ()
-#endif
+int main (int argc, char ** argv)
 {
-  int  local_j = global_i+1;
-  int  local_k = local_j+1;
+  int local_j = global_i + 1;
+  int local_k = local_j + 1;
+  char prog[PATH_MAX];
+  int len;
 
   printf ("foll-exec is about to execlp(execd-prog)...\n");
 
-  execlp ("gdb.base/execd-prog",
-          "gdb.base/execd-prog",
-          "execlp arg1 from foll-exec",
-          (char *)0);
+  strcpy (prog, argv[0]);
+  len = strlen (prog);
+  /* Replace "foll-exec" with "execd-prog".  */
+  memcpy (prog + len - 9, "execd-prog", 10);
+  prog[len + 1] = 0;
+
+  execlp (prog, /* tbreak-execlp */
+         prog,
+         "execlp arg1 from foll-exec",
+         (char *) 0);
 
   printf ("foll-exec is about to execl(execd-prog)...\n");
 
-  execl ("gdb.base/execd-prog",
-         "gdb.base/execd-prog",
-         "execl arg1 from foll-exec",
-         "execl arg2 from foll-exec",
-         (char *)0);
+  execl (prog, /* tbreak-execl */
+        prog,
+        "execl arg1 from foll-exec",
+        "execl arg2 from foll-exec",
+        (char *) 0);
 
   {
     static char * argv[] = {
-      (char *)"gdb.base/execd-prog",
-      (char *)"execv arg1 from foll-exec",
-      (char *)0};
+      (char *) "",
+      (char *) "execv arg1 from foll-exec",
+      (char *) 0};
+
+    argv[0] = prog;
 
     printf ("foll-exec is about to execv(execd-prog)...\n");
 
-    execv ("gdb.base/execd-prog", argv);
+    execv (prog, argv); /* tbreak-execv */
   }
 }
This page took 0.025899 seconds and 4 git commands to generate.