summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2014-05-12 20:20:20 +0000
committerAlexey Samsonov <samsonov@google.com>2014-05-12 20:20:20 +0000
commit6424e02fb2d7ad43155e17ae0a56548595e740ac (patch)
treeabd86577e67892f4005e899eb0988d9d6ad5d432 /clang/lib/Driver/Tools.cpp
parentfb1d83a978ef4231185620dbf320f1d07f4550d5 (diff)
downloadbcm5719-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.cpp20
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);
OpenPOWER on IntegriCloud