summaryrefslogtreecommitdiffstats
path: root/lld/COFF/Driver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/COFF/Driver.cpp')
-rw-r--r--lld/COFF/Driver.cpp20
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()));
OpenPOWER on IntegriCloud