summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/sanitizer_common/TestCases/Linux/signal_trap_handler.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/test/sanitizer_common/TestCases/Linux/signal_trap_handler.cpp b/test/sanitizer_common/TestCases/Linux/signal_trap_handler.cpp
index 9b4bc067e..f7af8aa85 100644
--- a/test/sanitizer_common/TestCases/Linux/signal_trap_handler.cpp
+++ b/test/sanitizer_common/TestCases/Linux/signal_trap_handler.cpp
@@ -3,11 +3,15 @@
#include <assert.h>
#include <signal.h>
#include <stdio.h>
+#include <stdlib.h>
-int handled;
+int in_handler;
void handler(int signo, siginfo_t *info, void *uctx) {
- handled = 1;
+ fprintf(stderr, "in_handler: %d\n", in_handler);
+ fflush(stderr);
+ // CHECK: in_handler: 1
+ _Exit(0);
}
int main() {
@@ -21,9 +25,10 @@ int main() {
assert(a.sa_sigaction == handler);
assert(a.sa_flags & SA_SIGINFO);
+ in_handler = 1;
__builtin_debugtrap();
- assert(handled);
- fprintf(stderr, "HANDLED %d\n", handled);
-}
+ in_handler = 0;
-// CHECK: HANDLED 1
+ fprintf(stderr, "UNREACHABLE\n");
+ return 1;
+}