summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorWalter Lee <waltl@google.com>2018-05-17 18:04:39 +0000
committerWalter Lee <waltl@google.com>2018-05-17 18:04:39 +0000
commita5cc222c682918d698854c594af509a4bb162f09 (patch)
tree49a9263d7a5060a8b96400d5bc74269a8ff029b0 /clang/lib
parentef0ebf2806b57e73bdd93f8ffffde164dda6e68c (diff)
downloadbcm5719-llvm-a5cc222c682918d698854c594af509a4bb162f09.tar.gz
bcm5719-llvm-a5cc222c682918d698854c594af509a4bb162f09.zip
[sanitizer] Don't add --export-dynamic for Myriad
This is to work around a bug in some versions of gnu ld, where --export-dynamic implies -shared even if -static is explicitly given. Myriad supports static linking only, so --export-dynamic is never needed. Differential Revision: https://reviews.llvm.org/D46452 llvm-svn: 332635
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/ToolChains/CommonArgs.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 854d5e15ff0..9a3ab8d4b2f 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -538,6 +538,11 @@ static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args,
// the option, so don't try to pass it.
if (TC.getTriple().getOS() == llvm::Triple::Solaris)
return true;
+ // Myriad is static linking only. Furthermore, some versions of its
+ // linker have the bug where --export-dynamic overrides -static, so
+ // don't use --export-dynamic on that platform.
+ if (TC.getTriple().getVendor() == llvm::Triple::Myriad)
+ return true;
SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer));
if (llvm::sys::fs::exists(SanRT + ".syms")) {
CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms"));
OpenPOWER on IntegriCloud