diff options
Diffstat (limited to 'test/asan/TestCases/Windows/unsymbolized.cc')
-rw-r--r-- | test/asan/TestCases/Windows/unsymbolized.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/asan/TestCases/Windows/unsymbolized.cc b/test/asan/TestCases/Windows/unsymbolized.cc new file mode 100644 index 000000000000..e44b4bbabb87 --- /dev/null +++ b/test/asan/TestCases/Windows/unsymbolized.cc @@ -0,0 +1,25 @@ +// When we link a binary without the -debug flag, ASan should print out VAs +// instead of RVAs. The frames for main and do_uaf should be above 0x400000, +// which is the default image base of an executable. + +// RUN: rm -f %t.pdb +// RUN: %clangxx_asan -c -O2 %s -o %t.obj +// RUN: link /nologo /OUT:%t.exe %t.obj %asan_lib %asan_cxx_lib +// RUN: not %run %t.exe 2>&1 | FileCheck %s + +#include <stdlib.h> +#include <stdio.h> +int __attribute__((noinline)) do_uaf(void); +int main() { + int r = do_uaf(); + printf("r: %d\n", r); + return r; +} +int do_uaf(void) { + char *x = (char*)malloc(10 * sizeof(char)); + free(x); + return x[5]; + // CHECK: AddressSanitizer: heap-use-after-free + // CHECK: #0 {{0x[a-f0-9]+ \(.*[\\/]unsymbolized.cc.*.exe\+0x40[a-f0-9]{4}\)}} + // CHECK: #1 {{0x[a-f0-9]+ \(.*[\\/]unsymbolized.cc.*.exe\+0x40[a-f0-9]{4}\)}} +} |