summaryrefslogtreecommitdiff
path: root/test/sanitizer_common/TestCases/Linux/ill.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2015-12-15 00:33:45 +0000
committerKostya Serebryany <kcc@google.com>2015-12-15 00:33:45 +0000
commitc0faabc2e40073acb8d06619a904a3b547b4541f (patch)
tree3aa05b0745171cd5cc43dedc1cd36baaa4e74af7 /test/sanitizer_common/TestCases/Linux/ill.cc
parentffbfb1371ee75516a8a18f395495247ae5cd3a0f (diff)
[asan] add option: handle_sigill
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@255588 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/sanitizer_common/TestCases/Linux/ill.cc')
-rw-r--r--test/sanitizer_common/TestCases/Linux/ill.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/sanitizer_common/TestCases/Linux/ill.cc b/test/sanitizer_common/TestCases/Linux/ill.cc
new file mode 100644
index 000000000..5b927627e
--- /dev/null
+++ b/test/sanitizer_common/TestCases/Linux/ill.cc
@@ -0,0 +1,25 @@
+// Test the handle_sigill option.
+// RUN: %clang %s -o %t -O1
+// RUN: not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s
+// RUN: %env_tool_opts=handle_sigill=0 not --crash %run %t 2>&1 | FileCheck --check-prefix=CHECK0 %s
+// RUN: %env_tool_opts=handle_sigill=1 not %run %t 2>&1 | FileCheck --check-prefix=CHECK1 %s
+// FIXME: implement in other sanitizers, not just asan.
+// XFAIL: msan
+// XFAIL: lsan
+// XFAIL: tsan
+//
+#include <assert.h>
+#include <stdio.h>
+#include <sanitizer/asan_interface.h>
+
+void death() {
+ fprintf(stderr, "DEATH CALLBACK\n");
+}
+
+int main(int argc, char **argv) {
+ __sanitizer_set_death_callback(death);
+ __builtin_trap();
+}
+// CHECK1: ERROR: {{.*}}Sanitizer:
+// CHECK1: DEATH CALLBACK
+// CHECK0-NOT: Sanitizer