summaryrefslogtreecommitdiffstats
path: root/regress/lib/libc
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-07-31 05:18:24 +0000
committerart <art@openbsd.org>2002-07-31 05:18:24 +0000
commit35f0245fbd3416c22a8452121e63122d6eecc893 (patch)
tree2696987b98adaa5004dc59b5cd5ebe4a00191736 /regress/lib/libc
parentinit pm_ptphint, hint from art@ (diff)
downloadwireguard-openbsd-35f0245fbd3416c22a8452121e63122d6eecc893.tar.xz
wireguard-openbsd-35f0245fbd3416c22a8452121e63122d6eecc893.zip
Test that longjmp from signals works. (it does)
Diffstat (limited to 'regress/lib/libc')
-rw-r--r--regress/lib/libc/setjmp-signal/Makefile5
-rw-r--r--regress/lib/libc/setjmp-signal/setjmp-signal.c26
2 files changed, 31 insertions, 0 deletions
diff --git a/regress/lib/libc/setjmp-signal/Makefile b/regress/lib/libc/setjmp-signal/Makefile
new file mode 100644
index 00000000000..a9649a8abe3
--- /dev/null
+++ b/regress/lib/libc/setjmp-signal/Makefile
@@ -0,0 +1,5 @@
+# $OpenBSD: Makefile,v 1.1 2002/07/31 05:18:24 art Exp $
+
+PROG= setjmp-signal
+
+.include <bsd.regress.mk>
diff --git a/regress/lib/libc/setjmp-signal/setjmp-signal.c b/regress/lib/libc/setjmp-signal/setjmp-signal.c
new file mode 100644
index 00000000000..c44f657cdaa
--- /dev/null
+++ b/regress/lib/libc/setjmp-signal/setjmp-signal.c
@@ -0,0 +1,26 @@
+/* $OpenBSD: setjmp-signal.c,v 1.1 2002/07/31 05:18:24 art Exp $ */
+/*
+ * Written by Artur Grabowski <art@openbsd.org> 2002 Public Domain.
+ */
+
+#include <setjmp.h>
+#include <signal.h>
+
+jmp_buf jb;
+
+void
+segv_handler(int signum)
+{
+ longjmp(jb, 1);
+}
+
+int
+main()
+{
+ signal(SIGSEGV, segv_handler);
+ if (setjmp(jb) == 0) {
+ *((int *)0) = 0;
+ return (1);
+ }
+ return (0);
+}