Author: mpividori Date: Sun Jan 29 00:03:05 2017 New Revision: 293420 URL: http://llvm.org/viewvc/llvm-project?rev=293420&view=rev Log: [windows] [asan] Add linker flag when including "asan_dynamic_runtime_thunk".
I modify clang driver for windows to include: "-wholearchive:asan_dynamic_runtime_thunk", so all object files in the static library: asan_dynamic_runtime_thunk are considered by the linker. This is necessary, because some object files only include linker pragmas, and doesn't resolve any symbol. If we don't include that flag, the linker will ignore them, and won't read the linker pragmas. Differential Revision: https://reviews.llvm.org/D29159 Modified: cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/Driver/cl-link.c Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=293420&r1=293419&r2=293420&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Sun Jan 29 00:03:05 2017 @@ -10990,6 +10990,10 @@ void visualstudio::Linker::ConstructJob( TC.getArch() == llvm::Triple::x86 ? "-include:___asan_seh_interceptor" : "-include:__asan_seh_interceptor")); + // Make sure the linker consider all object files from the dynamic runtime + // thunk. + CmdArgs.push_back(Args.MakeArgString(std::string("-wholearchive:") + + TC.getCompilerRT(Args, "asan_dynamic_runtime_thunk"))); } else if (DLL) { CmdArgs.push_back(TC.getCompilerRTArgString(Args, "asan_dll_thunk")); } else { Modified: cfe/trunk/test/Driver/cl-link.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-link.c?rev=293420&r1=293419&r2=293420&view=diff ============================================================================== --- cfe/trunk/test/Driver/cl-link.c (original) +++ cfe/trunk/test/Driver/cl-link.c Sun Jan 29 00:03:05 2017 @@ -22,8 +22,9 @@ // ASAN-MD: "-debug" // ASAN-MD: "-incremental:no" // ASAN-MD: "{{.*}}clang_rt.asan_dynamic-i386.lib" -// ASAN-MD: "{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" +// ASAN-MD: "{{[^"]*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" // ASAN-MD: "-include:___asan_seh_interceptor" +// ASAN-MD: "-wholearchive:{{.*}}clang_rt.asan_dynamic_runtime_thunk-i386.lib" // ASAN-MD: "{{.*}}cl-link{{.*}}.obj" // RUN: %clang_cl /LD -### /Tc%s 2>&1 | FileCheck --check-prefix=DLL %s _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits