diff options
| author | Alexey Samsonov <samsonov@google.com> | 2014-05-12 20:20:20 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2014-05-12 20:20:20 +0000 |
| commit | 6424e02fb2d7ad43155e17ae0a56548595e740ac (patch) | |
| tree | abd86577e67892f4005e899eb0988d9d6ad5d432 /clang/lib/Driver/Tools.cpp | |
| parent | fb1d83a978ef4231185620dbf320f1d07f4550d5 (diff) | |
| download | bcm5719-llvm-6424e02fb2d7ad43155e17ae0a56548595e740ac.tar.gz bcm5719-llvm-6424e02fb2d7ad43155e17ae0a56548595e740ac.zip | |
[ASan] Fixup for r208610: link in asan_cxx library on Windows
llvm-svn: 208625
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 20 |
1 files changed, 14 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); |

