summaryrefslogtreecommitdiff
path: root/lib/asan/tests/asan_test.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2015-08-05 21:19:11 +0000
committerKostya Serebryany <kcc@google.com>2015-08-05 21:19:11 +0000
commit41e764c06a29e39a1ff85feafec8c1d499173caf (patch)
tree60197da182eeed2bce5868adcfae86bd85232ce2 /lib/asan/tests/asan_test.cc
parent594068260122bba858e1de8c3c1bd5c379b33d7c (diff)
[sanitizer] Add the flag handle_sigfpe that is default true to handle SIGFPE crashes same as SIGSEV crashes, patch by Karl Skomski
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@244136 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/tests/asan_test.cc')
-rw-r--r--lib/asan/tests/asan_test.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/asan/tests/asan_test.cc b/lib/asan/tests/asan_test.cc
index 07d59e09a..63497f08a 100644
--- a/lib/asan/tests/asan_test.cc
+++ b/lib/asan/tests/asan_test.cc
@@ -250,12 +250,24 @@ TEST(AddressSanitizer, BitFieldNegativeTest) {
#if ASAN_NEEDS_SEGV
namespace {
-const char kUnknownCrash[] = "AddressSanitizer: SEGV on unknown address";
+const char kSEGVCrash[] = "AddressSanitizer: SEGV on unknown address";
+const char kFPECrash[] = "AddressSanitizer: FPE on unknown address";
const char kOverriddenHandler[] = "ASan signal handler has been overridden\n";
TEST(AddressSanitizer, WildAddressTest) {
char *c = (char*)0x123;
- EXPECT_DEATH(*c = 0, kUnknownCrash);
+ EXPECT_DEATH(*c = 0, kSEGVCrash);
+}
+
+void division_by_zero() {
+ volatile int one = 1;
+ volatile int zero = 0;
+ volatile int sink;
+ sink = one / zero;
+}
+
+TEST(AddressSanitizer, FPECrashTest) {
+ EXPECT_DEATH(division_by_zero(), kFPECrash);
}
void my_sigaction_sighandler(int, siginfo_t*, void*) {
@@ -279,10 +291,10 @@ TEST(AddressSanitizer, SignalTest) {
EXPECT_EQ(0, sigaction(SIGBUS, &sigact, 0));
#endif
char *c = (char*)0x123;
- EXPECT_DEATH(*c = 0, kUnknownCrash);
+ EXPECT_DEATH(*c = 0, kSEGVCrash);
// ... and signal().
EXPECT_EQ(0, signal(SIGSEGV, my_signal_sighandler));
- EXPECT_DEATH(*c = 0, kUnknownCrash);
+ EXPECT_DEATH(*c = 0, kSEGVCrash);
}
} // namespace
#endif