]> granicus.if.org Git - clang/commitdiff
[clang] [Driver] [NetBSD] Append -rpath for shared compiler-rt runtimes
authorMichal Gorny <mgorny@gentoo.org>
Wed, 30 Jan 2019 08:20:24 +0000 (08:20 +0000)
committerMichal Gorny <mgorny@gentoo.org>
Wed, 30 Jan 2019 08:20:24 +0000 (08:20 +0000)
Append appropriate -rpath when using shared compiler-rt runtimes,
e.g. '-fsanitize=address -shared-libasan'.  There's already a similar
logic in CommonArgs.cpp but it uses non-standard arch-suffixed
installation directory while we want our driver to work with standard
installation paths.

Differential Revision: https://reviews.llvm.org/D57303

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@352610 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains/NetBSD.cpp

index ecc7c9dc1b241919a7b09ea0f572ea56cc18c2fd..ae9564b817c27d15c5d42ede6ee16105294dcc0c 100644 (file)
@@ -255,6 +255,13 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
   bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA);
 
+  const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs();
+  if (SanArgs.needsSharedRt()) {
+    CmdArgs.push_back("-rpath");
+    CmdArgs.push_back(Args.MakeArgString(
+        ToolChain.getCompilerRTPath().c_str()));
+  }
+
   unsigned Major, Minor, Micro;
   ToolChain.getTriple().getOSVersion(Major, Minor, Micro);
   bool useLibgcc = true;