From 9d3c3384530c851010fcc0e292412024885038ff Mon Sep 17 00:00:00 2001 From: Timur Iskhodzhanov Date: Mon, 14 Jul 2014 17:04:03 +0000 Subject: [PATCH] [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 --- test/asan/TestCases/Windows/dll_and_lib.cc | 18 ++++++++++++++++++ test/asan/lit.cfg | 2 ++ 2 files changed, 20 insertions(+) create mode 100644 test/asan/TestCases/Windows/dll_and_lib.cc 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( -- 2.11.4.GIT