diff options
author | Reid Kleckner <rnk@google.com> | 2018-06-20 00:45:54 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-06-20 00:45:54 +0000 |
commit | b3ba1cc82a23f91500f91e091659d4aad76f54a8 (patch) | |
tree | 7a5512a114ccde91dc195095b61efb974b75cd70 | |
parent | d334615c23440d77cf601d9e0b64db2ee7245c5e (diff) | |
download | bcm5719-llvm-b3ba1cc82a23f91500f91e091659d4aad76f54a8.tar.gz bcm5719-llvm-b3ba1cc82a23f91500f91e091659d4aad76f54a8.zip |
[asan] Add Windows test for handle_segv and SetUnhandledExceptionFilter
llvm-svn: 335087
-rw-r--r-- | compiler-rt/test/asan/TestCases/Windows/user-exception.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/compiler-rt/test/asan/TestCases/Windows/user-exception.cc b/compiler-rt/test/asan/TestCases/Windows/user-exception.cc new file mode 100644 index 00000000000..6824115f27d --- /dev/null +++ b/compiler-rt/test/asan/TestCases/Windows/user-exception.cc @@ -0,0 +1,35 @@ +// RUN: %clang_cl_asan -O0 %s -Fe%t +// RUN: env ASAN_OPTIONS=handle_segv=0 %run %t 2>&1 | FileCheck %s --check-prefix=USER +// RUN: env ASAN_OPTIONS=handle_segv=1 not %run %t 2>&1 | FileCheck %s --check-prefix=ASAN +// Test the default. +// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=ASAN + +// This test exits zero when its unhandled exception filter is set. ASan should +// not disturb it when handle_segv=0. + +// USER: in main +// USER: in SEHHandler + +// ASAN: in main +// ASAN: ERROR: AddressSanitizer: access-violation + +#include <windows.h> +#include <stdio.h> + +static long WINAPI SEHHandler(EXCEPTION_POINTERS *info) { + DWORD exception_code = info->ExceptionRecord->ExceptionCode; + if (exception_code == EXCEPTION_ACCESS_VIOLATION) { + fprintf(stderr, "in SEHHandler\n"); + fflush(stdout); + TerminateProcess(GetCurrentProcess(), 0); + } + return EXCEPTION_CONTINUE_SEARCH; +} + +int main() { + SetUnhandledExceptionFilter(SEHHandler); + fprintf(stderr, "in main\n"); + + volatile int *p = nullptr; + *p = 42; +} |