summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChain.cpp
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2017-08-10 04:16:38 +0000
committerPetr Hosek <phosek@chromium.org>2017-08-10 04:16:38 +0000
commit916a4672c11d40698987e16c2b896a3b68b8a776 (patch)
tree50a9a3eb68129ee6d0b2604d33d5e62a240bcc80 /clang/lib/Driver/ToolChain.cpp
parent9c161e894af3dd7f54dd29218a476bc270864d24 (diff)
downloadbcm5719-llvm-916a4672c11d40698987e16c2b896a3b68b8a776.tar.gz
bcm5719-llvm-916a4672c11d40698987e16c2b896a3b68b8a776.zip
[Driver] Search compiler-rt paths in -print-file-name=
This makes it possible to print the name of compiler-rt libraries by using simply clang -print-file-name=libclang_rt.${runtime}-${arch}.so same as other libraries, without having to know the details of the resource directory organization. Differential Revision: https://reviews.llvm.org/D35820 llvm-svn: 310548
Diffstat (limited to 'clang/lib/Driver/ToolChain.cpp')
-rw-r--r--clang/lib/Driver/ToolChain.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 10fad752cfe..c7c377971e5 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -308,6 +308,13 @@ static StringRef getArchNameForCompilerRTLib(const ToolChain &TC,
return TC.getArchName();
}
+std::string ToolChain::getCompilerRTPath() const {
+ SmallString<128> Path(getDriver().ResourceDir);
+ StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS();
+ llvm::sys::path::append(Path, "lib", OSLibName);
+ return Path.str();
+}
+
std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
bool Shared) const {
const llvm::Triple &TT = getTriple();
@@ -320,9 +327,7 @@ std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
const char *Suffix = Shared ? (Triple.isOSWindows() ? ".dll" : ".so")
: (IsITANMSVCWindows ? ".lib" : ".a");
- SmallString<128> Path(getDriver().ResourceDir);
- StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS();
- llvm::sys::path::append(Path, "lib", OSLibName);
+ SmallString<128> Path(getCompilerRTPath());
llvm::sys::path::append(Path, Prefix + Twine("clang_rt.") + Component + "-" +
Arch + Env + Suffix);
return Path.str();
OpenPOWER on IntegriCloud