// Searches a given library from input search paths, which are filled
// from -L command line switches. Returns a path to an existent library file.
std::string elf::searchLibrary(StringRef Path) {
- std::vector<std::string> Names;
- if (Path[0] == ':') {
- Names.push_back(Path.drop_front());
- } else {
- if (!Config->Static)
- Names.push_back(("lib" + Path + ".so").str());
- Names.push_back(("lib" + Path + ".a").str());
- }
- for (const std::string &Name : Names) {
- std::string S = findFromSearchPaths(Name);
+ if (Path.startswith(":"))
+ return findFromSearchPaths(Path.substr(1));
+ if (!Config->Static) {
+ std::string S = findFromSearchPaths(("lib" + Path + ".so").str());
if (!S.empty())
return S;
}
- return "";
+ return findFromSearchPaths(("lib" + Path + ".a").str());
}
// Makes a path by concatenating Dir and File.