From 52b94abf7e2a873b48a4b28b1fa1d62b92643849 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Thu, 17 May 2018 18:04:39 +0000 Subject: [PATCH] [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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332635 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/ToolChains/CommonArgs.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp index 854d5e15ff..9a3ab8d4b2 100644 --- a/lib/Driver/ToolChains/CommonArgs.cpp +++ b/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")); -- 2.40.0