diff options
Diffstat (limited to 'lld/COFF/Driver.cpp')
| -rw-r--r-- | lld/COFF/Driver.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index d89624c350b..c03102ec0e2 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -191,20 +191,16 @@ Optional<StringRef> LinkerDriver::findLib(StringRef Filename) { } // Parses LIB environment which contains a list of search paths. -std::vector<StringRef> LinkerDriver::getSearchPaths() { - std::vector<StringRef> Ret; - // Add current directory as first item of the search paths. - Ret.push_back(""); +void LinkerDriver::addLibSearchPaths() { Optional<std::string> EnvOpt = Process::GetEnv("LIB"); if (!EnvOpt.hasValue()) - return Ret; + return; StringRef Env = Alloc.save(*EnvOpt); while (!Env.empty()) { StringRef Path; std::tie(Path, Env) = Env.split(';'); - Ret.push_back(Path); + SearchPaths.push_back(Path); } - return Ret; } static WindowsSubsystem inferSubsystem() { @@ -251,6 +247,12 @@ bool LinkerDriver::link(int Argc, const char *Argv[]) { return false; } + // Construct search path list. + SearchPaths.push_back(""); + for (auto *Arg : Args->filtered(OPT_libpath)) + SearchPaths.push_back(Arg->getValue()); + addLibSearchPaths(); + // Handle /out if (auto *Arg = Args->getLastArg(OPT_out)) Config->OutputFile = Arg->getValue(); @@ -287,10 +289,6 @@ bool LinkerDriver::link(int Argc, const char *Argv[]) { } Config->MachineType = MTOrErr.get(); - // Handle /libpath - for (auto *Arg : Args->filtered(OPT_libpath)) - SearchPaths.push_back(Arg->getValue()); - // Handle /nodefaultlib:<filename> for (auto *Arg : Args->filtered(OPT_nodefaultlib)) Config->NoDefaultLibs.insert(doFindLib(Arg->getValue())); |

