diff options
-rw-r--r-- | nptl/tst-getpid1.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/nptl/tst-getpid1.c b/nptl/tst-getpid1.c index 061b48d735..497bebed56 100644 --- a/nptl/tst-getpid1.c +++ b/nptl/tst-getpid1.c @@ -1,5 +1,6 @@ #include <sched.h> #include <signal.h> +#include <string.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> @@ -66,20 +67,6 @@ do_test (void) } while (si.si_signo != sig || si.si_code != SI_QUEUE); - if (si.si_int != (int) p) - { - printf ("expected PID %d, got si_int %d\n", (int) p, si.si_int); - kill (p, SIGKILL); - return 1; - } - - if (si.si_pid != p) - { - printf ("expected PID %d, got si_pid %d\n", (int) p, (int) si.si_pid); - kill (p, SIGKILL); - return 1; - } - int e; if (waitpid (p, &e, __WCLONE) != p) { @@ -89,7 +76,10 @@ do_test (void) } if (!WIFEXITED (e)) { - puts ("did not terminate correctly"); + if (WIFSIGNALED (e)) + printf ("died from signal %s\n", strsignal (WTERMSIG (e))); + else + puts ("did not terminate correctly"); return 1; } if (WEXITSTATUS (e) != 0) @@ -98,6 +88,20 @@ do_test (void) return 1; } + if (si.si_int != (int) p) + { + printf ("expected PID %d, got si_int %d\n", (int) p, si.si_int); + kill (p, SIGKILL); + return 1; + } + + if (si.si_pid != p) + { + printf ("expected PID %d, got si_pid %d\n", (int) p, (int) si.si_pid); + kill (p, SIGKILL); + return 1; + } + if (getpid () != mypid) { puts ("my PID changed"); |