Smack: add the execute lable to ldconfig
[platform/upstream/glibc.git] / posix / test-vfork.c
index 9c35289..6dfb7d4 100644 (file)
@@ -1,15 +1,19 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <error.h>
 #include <errno.h>
 #include <sys/wait.h>
 
-void noop (void);
+void __attribute_noinline__ noop (void);
+
+#define NR     2       /* Exit code of the child.  */
 
 int
 main (void)
 {
-  int pid;
+  pid_t pid;
+  int status;
 
   printf ("Before vfork\n");
   fflush (stdout);
@@ -20,16 +24,19 @@ main (void)
         machines where it is stored on the stack, if vfork wasn't
         implemented correctly, */
       noop ();
-      _exit (2);
+      _exit (NR);
     }
   else if (pid < 0)
     error (1, errno, "vfork");
   printf ("After vfork (parent)\n");
-  wait (0);
-  exit (0);
+  if (waitpid (0, &status, 0) != pid
+      || !WIFEXITED (status) || WEXITSTATUS (status) != NR)
+    exit (1);
+
+  return 0;
 }
 
 void
-noop ()
+noop (void)
 {
 }