diff options
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 20 | ||||
| -rw-r--r-- | clang/test/Driver/cl-link.c | 1 |
2 files changed, 15 insertions, 6 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index e2bb0b12cd4..fcd1275d6ba 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -7433,6 +7433,15 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA, C.addCommand(new Command(JA, *this, Exec, CmdArgs)); } +static void addSanitizerRTWindows(const ToolChain &TC, const ArgList &Args, + ArgStringList &CmdArgs, + const StringRef RTName) { + SmallString<128> LibSanitizer(getCompilerRTLibDir(TC)); + llvm::sys::path::append(LibSanitizer, + Twine("clang_rt.") + RTName + ".lib"); + CmdArgs.push_back(Args.MakeArgString(LibSanitizer)); +} + void visualstudio::Link::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, @@ -7473,15 +7482,14 @@ void visualstudio::Link::ConstructJob(Compilation &C, const JobAction &JA, if (getToolChain().getSanitizerArgs().needsAsanRt()) { CmdArgs.push_back(Args.MakeArgString("-debug")); CmdArgs.push_back(Args.MakeArgString("-incremental:no")); - SmallString<128> LibSanitizer(getToolChain().getDriver().ResourceDir); - llvm::sys::path::append(LibSanitizer, "lib", "windows"); + // FIXME: Handle 64-bit. if (DLL) { - llvm::sys::path::append(LibSanitizer, "clang_rt.asan_dll_thunk-i386.lib"); + addSanitizerRTWindows(getToolChain(), Args, CmdArgs, + "asan_dll_thunk-i386"); } else { - llvm::sys::path::append(LibSanitizer, "clang_rt.asan-i386.lib"); + addSanitizerRTWindows(getToolChain(), Args, CmdArgs, "asan-i386"); + addSanitizerRTWindows(getToolChain(), Args, CmdArgs, "asan_cxx-i386"); } - // FIXME: Handle 64-bit. - CmdArgs.push_back(Args.MakeArgString(LibSanitizer)); } Args.AddAllArgValues(CmdArgs, options::OPT_l); diff --git a/clang/test/Driver/cl-link.c b/clang/test/Driver/cl-link.c index 309c27dab14..f4717465d3e 100644 --- a/clang/test/Driver/cl-link.c +++ b/clang/test/Driver/cl-link.c @@ -16,6 +16,7 @@ // ASAN: "-debug" // ASAN: "-incremental:no" // ASAN: "{{.*}}clang_rt.asan-i386.lib" +// ASAN: "{{.*}}clang_rt.asan_cxx-i386.lib" // ASAN: "{{.*}}cl-link{{.*}}.obj" // RUN: %clang_cl /LD -### /Tc%s 2>&1 | FileCheck --check-prefix=DLL %s |

