diff options
author | Kostya Serebryany <kcc@google.com> | 2015-08-05 21:19:11 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2015-08-05 21:19:11 +0000 |
commit | 41e764c06a29e39a1ff85feafec8c1d499173caf (patch) | |
tree | 60197da182eeed2bce5868adcfae86bd85232ce2 /lib/asan/tests/asan_test.cc | |
parent | 594068260122bba858e1de8c3c1bd5c379b33d7c (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.cc | 20 |
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 |