Myriad: nominally "support" ASAN.
Doesn't work, but needs to be enabled in order to get there. llvm-svn: 281071
This commit is contained in:
parent
72c5b6451f
commit
3972f9e6df
|
@ -5042,6 +5042,10 @@ Tool *MyriadToolChain::buildLinker() const {
|
|||
return new tools::Myriad::Linker(*this);
|
||||
}
|
||||
|
||||
SanitizerMask MyriadToolChain::getSupportedSanitizers() const {
|
||||
return SanitizerKind::Address;
|
||||
}
|
||||
|
||||
WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple,
|
||||
const llvm::opt::ArgList &Args)
|
||||
: ToolChain(D, Triple, Args) {
|
||||
|
|
|
@ -1147,6 +1147,7 @@ public:
|
|||
llvm::opt::ArgStringList &CC1Args) const override;
|
||||
Tool *SelectTool(const JobAction &JA) const override;
|
||||
unsigned GetDefaultDwarfVersion() const override { return 2; }
|
||||
SanitizerMask getSupportedSanitizers() const override;
|
||||
|
||||
protected:
|
||||
Tool *buildLinker() const override;
|
||||
|
|
|
@ -3081,11 +3081,15 @@ static void linkSanitizerRuntimeDeps(const ToolChain &TC,
|
|||
// Force linking against the system libraries sanitizers depends on
|
||||
// (see PR15823 why this is necessary).
|
||||
CmdArgs.push_back("--no-as-needed");
|
||||
CmdArgs.push_back("-lpthread");
|
||||
CmdArgs.push_back("-lrt");
|
||||
// There's no libpthread or librt on RTEMS.
|
||||
if (TC.getTriple().getOS() != llvm::Triple::RTEMS) {
|
||||
CmdArgs.push_back("-lpthread");
|
||||
CmdArgs.push_back("-lrt");
|
||||
}
|
||||
CmdArgs.push_back("-lm");
|
||||
// There's no libdl on FreeBSD.
|
||||
if (TC.getTriple().getOS() != llvm::Triple::FreeBSD)
|
||||
// There's no libdl on FreeBSD or RTEMS.
|
||||
if (TC.getTriple().getOS() != llvm::Triple::FreeBSD &&
|
||||
TC.getTriple().getOS() != llvm::Triple::RTEMS)
|
||||
CmdArgs.push_back("-ldl");
|
||||
}
|
||||
|
||||
|
@ -11055,9 +11059,12 @@ void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
TC.AddFilePathLibArgs(Args, CmdArgs);
|
||||
|
||||
bool NeedsSanitizerDeps = addSanitizerRuntimes(TC, Args, CmdArgs);
|
||||
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
|
||||
|
||||
if (UseDefaultLibs) {
|
||||
if (NeedsSanitizerDeps)
|
||||
linkSanitizerRuntimeDeps(TC, CmdArgs);
|
||||
if (C.getDriver().CCCIsCXX())
|
||||
CmdArgs.push_back("-lstdc++");
|
||||
if (T.getOS() == llvm::Triple::RTEMS) {
|
||||
|
|
|
@ -151,6 +151,15 @@
|
|||
// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
|
||||
// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target sparcel-myriad-rtems-elf -fsanitize=address \
|
||||
// RUN: --sysroot=%S/Inputs/basic_myriad_tree \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ASAN-MYRIAD %s
|
||||
//
|
||||
// CHECK-ASAN-MYRIAD: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
||||
// CHECK-ASAN-MYRIAD-NOT: "-lc"
|
||||
// CHECK-ASAN-MYRIAD: libclang_rt.asan-sparcel.a"
|
||||
|
||||
// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target x86_64-unknown-linux -stdlib=platform -lstdc++ \
|
||||
// RUN: -fsanitize=thread \
|
||||
|
|
Loading…
Reference in New Issue