diff options
| author | Douglas Katzman <dougk@google.com> | 2016-09-09 18:20:49 +0000 |
|---|---|---|
| committer | Douglas Katzman <dougk@google.com> | 2016-09-09 18:20:49 +0000 |
| commit | 3972f9e6df4ef35bd00df04efbed6806a9964cd6 (patch) | |
| tree | 4859181eeb81defc5f5fb4bb9f8e1f4281aa5733 /clang/lib/Driver | |
| parent | 72c5b6451f469077934e755a42e4e72bedbb00f1 (diff) | |
| download | bcm5719-llvm-3972f9e6df4ef35bd00df04efbed6806a9964cd6.tar.gz bcm5719-llvm-3972f9e6df4ef35bd00df04efbed6806a9964cd6.zip | |
Myriad: nominally "support" ASAN.
Doesn't work, but needs to be enabled in order to get there.
llvm-svn: 281071
Diffstat (limited to 'clang/lib/Driver')
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains.h | 1 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 15 |
3 files changed, 16 insertions, 4 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index e28f7f868f1..3d5183d46e3 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -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) { diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index 371b9bfe97e..a0dcbf65f96 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -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; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 8cd86434624..8a77fab2fec 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -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) { |

