summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/test')
-rw-r--r--compiler-rt/test/asan/TestCases/Windows/unsymbolized.cc25
-rw-r--r--compiler-rt/test/asan/lit.cfg6
2 files changed, 29 insertions, 2 deletions
diff --git a/compiler-rt/test/asan/TestCases/Windows/unsymbolized.cc b/compiler-rt/test/asan/TestCases/Windows/unsymbolized.cc
new file mode 100644
index 00000000000..e44b4bbabb8
--- /dev/null
+++ b/compiler-rt/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}\)}}
+}
diff --git a/compiler-rt/test/asan/lit.cfg b/compiler-rt/test/asan/lit.cfg
index 57ee2e4a0c4..a80b03ba39f 100644
--- a/compiler-rt/test/asan/lit.cfg
+++ b/compiler-rt/test/asan/lit.cfg
@@ -113,8 +113,10 @@ if platform.system() == 'Windows':
clang_invocation = build_invocation(clang_cl_asan_cxxflags)
clang_cl_invocation = clang_invocation.replace("clang.exe","clang-cl.exe")
config.substitutions.append( ("%clang_cl_asan ", clang_cl_invocation) )
- config.substitutions.append( ("%asan_dll_thunk",
- os.path.join(config.compiler_rt_libdir, "clang_rt.asan_dll_thunk-i386.lib")))
+ base_lib = os.path.join(config.compiler_rt_libdir, "clang_rt.asan%%s-%s.lib" % config.target_arch)
+ config.substitutions.append( ("%asan_lib", base_lib % "") )
+ config.substitutions.append( ("%asan_cxx_lib", base_lib % "_cxx") )
+ config.substitutions.append( ("%asan_dll_thunk", base_lib % "_dll_thunk") )
# FIXME: De-hardcode this path.
asan_source_dir = os.path.join(
OpenPOWER on IntegriCloud