summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Iskhodzhanov <timurrrr@google.com>2014-07-14 17:04:03 +0000
committerTimur Iskhodzhanov <timurrrr@google.com>2014-07-14 17:04:03 +0000
commit9d3c3384530c851010fcc0e292412024885038ff (patch)
tree8a6af297b8d90d1721be5cc7fbe97d01832df170
parent466c8ac3bd0ad0c84a4c86db0b1406c935954e65 (diff)
downloadcompiler-rt-9d3c3384530c851010fcc0e292412024885038ff.tar.gz
[ASan/Win] Add a test for the case when dll_thunk is linked twice to the same DLL
This is a test case for r212815. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@212959 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/asan/TestCases/Windows/dll_and_lib.cc18
-rw-r--r--test/asan/lit.cfg2
2 files changed, 20 insertions, 0 deletions
diff --git a/test/asan/TestCases/Windows/dll_and_lib.cc b/test/asan/TestCases/Windows/dll_and_lib.cc
new file mode 100644
index 000000000..f7d4de949
--- /dev/null
+++ b/test/asan/TestCases/Windows/dll_and_lib.cc
@@ -0,0 +1,18 @@
+// Just make sure we can link an implib into another DLL
+// This used to fail between r212699 and r212814.
+// RUN: %clang_cl_asan -DCONFIG=1 %s -c -Fo%t.1.obj
+// RUN: link /nologo /DLL /OUT:%t.1.dll %t.1.obj %asan_dll_thunk
+// RUN: %clang_cl_asan -DCONFIG=2 %s -c -Fo%t.2.obj
+// RUN: link /nologo /DLL /OUT:%t.2.dll %t.2.obj %t.1.lib %asan_dll_thunk
+
+#if CONFIG==1
+extern "C" __declspec(dllexport) int f1() {
+ int x = 0;
+ return 1;
+}
+#else
+extern "C" __declspec(dllexport) int f2() {
+ int x = 0;
+ return 2;
+}
+#endif
diff --git a/test/asan/lit.cfg b/test/asan/lit.cfg
index db2459fd0..c4da7152d 100644
--- a/test/asan/lit.cfg
+++ b/test/asan/lit.cfg
@@ -79,6 +79,8 @@ 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")))
# FIXME: De-hardcode this path.
asan_source_dir = os.path.join(