]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r9426, r9427 ('pending' portability tweaks) from the DARWIN branch.
authorNicholas Nethercote <njn@valgrind.org>
Mon, 16 Mar 2009 03:46:48 +0000 (03:46 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Mon, 16 Mar 2009 03:46:48 +0000 (03:46 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9428

configure.in
none/tests/pending.c
none/tests/pending.stdout.exp

index c2021dce377616e03ea700bdb0ae5bf13cd251bc..59f4f2d930c25d93e11bffbc0196173604afcd76 100644 (file)
@@ -1381,6 +1381,7 @@ AC_CHECK_FUNCS([     \
         pthread_spin_lock          \
         semtimedop   \
         signalfd     \
+        sigwaitinfo  \
         syscall      \
         strchr       \
         strdup       \
index aae53ea1cab6922290bdebf962cb7c186d124b8a..05c449b474f55dca2f8bca0a452a48b61875e205 100644 (file)
 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include "config.h"
 
 static volatile int gotsig = 0;
 static volatile int early = 1;
 
 static void handler(int sig)
 {
-       printf("4: got signal %d\n", sig);
+       printf("4: got signal %s\n",
+               ( sig == SIGUSR1 ? "SIGUSR1" : "unexpected signal" ));
 
        if (sig != SIGUSR1) {
                fprintf(stderr, "FAILED: got signal %d instead\n", sig);
@@ -35,7 +37,6 @@ int main()
 {
        sigset_t all;
        sigset_t sigusr1;
-       siginfo_t info;
        
        sigfillset(&all);
        sigemptyset(&sigusr1);
@@ -69,15 +70,20 @@ int main()
        }
 
        printf("6: checking SIGUSR2 still pending...\n");
-       if (sigwaitinfo(&all, &info) == -1) {
-               perror("FAILED: sigwaitinfo failed");
-               return 1;
-       }
-       if (info.si_signo != SIGUSR2) {
-               fprintf(stderr, "FAILED: SIGUSR2 not still pending; got signal %d\n", 
-                       info.si_signo);
-               return 1;
+#      if HAVE_SIGWAITINFO
+       {
+               siginfo_t info;
+               if (sigwaitinfo(&all, &info) == -1) {
+                       perror("FAILED: sigwaitinfo failed");
+                       return 1;
+               }
+               if (info.si_signo != SIGUSR2) {
+                       fprintf(stderr, "FAILED: SIGUSR2 not still pending; got signal %d\n", 
+                               info.si_signo);
+                       return 1;
+               }
        }
+#      endif
 
        printf("OK\n");
        return 0;
index 5a0210a88df4c86daf33d0bc67a5fc6dc2092dca..5494d3505927b5863ce7d62729570966ad55717d 100644 (file)
@@ -1,7 +1,7 @@
 1: sending signal
 2: sleeping
 3: unblocking
-4: got signal 10
+4: got signal SIGUSR1
 5: unblocked...
 6: checking SIGUSR2 still pending...
 OK