add local exec tls align test
[libc-test] / src / functional / setjmp.c
index db82511..adba1a6 100644 (file)
@@ -3,7 +3,7 @@
 #include <setjmp.h>
 #include "test.h"
 
-#define TEST(c, ...) ((c) ? 1 : (error(#c" failed: " __VA_ARGS__),0))
+#define TEST(c, ...) ((c) ? 1 : (t_error(#c" failed: " __VA_ARGS__),0))
 
 int main(void)
 {
@@ -46,5 +46,20 @@ int main(void)
        sigprocmask(SIG_SETMASK, &set, &set);
        TEST(sigismember(&set, SIGUSR1)==0, "siglongjmp failed to restore mask\n");
 
-       return test_status;
+       sigemptyset(&set);
+       sigaddset(&set, SIGUSR1);
+       sigprocmask(SIG_UNBLOCK, &set, &set);
+       oldset = set;
+
+       if (!sigsetjmp(sjb, 0)) {
+               sigemptyset(&set);
+               sigaddset(&set, SIGUSR1);
+               sigprocmask(SIG_BLOCK, &set, 0);
+               siglongjmp(sjb, 1);
+       }
+       set = oldset;
+       sigprocmask(SIG_SETMASK, &set, &set);
+       TEST(sigismember(&set, SIGUSR1)==1, "siglongjmp incorrectly restored mask\n");
+
+       return t_status;
 }