[PATCH] D51573: [Driver] Search LibraryPaths when handling -print-file-name
Petr Hosek via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Sep 1 14:51:30 PDT 2018
phosek created this revision.
phosek added a reviewer: beanz.
Herald added a subscriber: cfe-commits.
This is necessary to handle the multiarch runtime directories.
Repository:
rC Clang
https://reviews.llvm.org/D51573
Files:
clang/lib/Driver/Driver.cpp
Index: clang/lib/Driver/Driver.cpp
===================================================================
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -4166,16 +4166,23 @@
}
std::string Driver::GetFilePath(StringRef Name, const ToolChain &TC) const {
+ auto FindPath = [&](const llvm::SmallVectorImpl<std::string> &P)
+ -> llvm::Optional<std::string> {
+ for (const std::string &Dir : P) {
+ if (Dir.empty())
+ continue;
+ SmallString<128> P(Dir[0] == '=' ? SysRoot + Dir.substr(1) : Dir);
+ llvm::sys::path::append(P, Name);
+ if (llvm::sys::fs::exists(Twine(P)))
+ return std::string(P.str());
+ }
+ return None;
+ };
+
// Respect a limited subset of the '-Bprefix' functionality in GCC by
// attempting to use this prefix when looking for file paths.
- for (const std::string &Dir : PrefixDirs) {
- if (Dir.empty())
- continue;
- SmallString<128> P(Dir[0] == '=' ? SysRoot + Dir.substr(1) : Dir);
- llvm::sys::path::append(P, Name);
- if (llvm::sys::fs::exists(Twine(P)))
- return P.str();
- }
+ if (Optional<std::string> D = FindPath(PrefixDirs))
+ return *D;
SmallString<128> R(ResourceDir);
llvm::sys::path::append(R, Name);
@@ -4187,14 +4194,11 @@
if (llvm::sys::fs::exists(Twine(P)))
return P.str();
- for (const std::string &Dir : TC.getFilePaths()) {
- if (Dir.empty())
- continue;
- SmallString<128> P(Dir[0] == '=' ? SysRoot + Dir.substr(1) : Dir);
- llvm::sys::path::append(P, Name);
- if (llvm::sys::fs::exists(Twine(P)))
- return P.str();
- }
+ if (Optional<std::string> D = FindPath(TC.getLibraryPaths()))
+ return *D;
+
+ if (Optional<std::string> D = FindPath(TC.getFilePaths()))
+ return *D;
return Name;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51573.163629.patch
Type: text/x-patch
Size: 1789 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180901/bb1dd189/attachment.bin>
More information about the cfe-commits
mailing list