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,
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);