diff --git a/lld/ELF/DriverUtils.cpp b/lld/ELF/DriverUtils.cpp index f40cfdd5876a..91a63e01a6e0 100644 --- a/lld/ELF/DriverUtils.cpp +++ b/lld/ELF/DriverUtils.cpp @@ -99,20 +99,14 @@ std::string elf::findFromSearchPaths(StringRef Path) { // 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 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.