summaryrefslogtreecommitdiff
path: root/src/signal/sigsetjmp_tail.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/signal/sigsetjmp_tail.c')
-rw-r--r--src/signal/sigsetjmp_tail.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/signal/sigsetjmp_tail.c b/src/signal/sigsetjmp_tail.c
new file mode 100644
index 00000000..487ad8ca
--- /dev/null
+++ b/src/signal/sigsetjmp_tail.c
@@ -0,0 +1,13 @@
+#include <setjmp.h>
+#include <signal.h>
+#include "syscall.h"
+
+#ifdef SHARED
+__attribute__((__visibility__("hidden")))
+#endif
+int __sigsetjmp_tail(sigjmp_buf jb, int ret)
+{
+ void *p = jb->__ss;
+ __syscall(SYS_rt_sigprocmask, SIG_SETMASK, ret?p:0, ret?0:p, _NSIG/8);
+ return ret;
+}