summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Config.h1
-rw-r--r--lld/ELF/Driver.cpp1
-rw-r--r--lld/ELF/LinkerScript.cpp3
-rw-r--r--lld/ELF/Options.td3
-rw-r--r--lld/test/ELF/libsearch.s5
5 files changed, 12 insertions, 1 deletions
diff --git a/lld/ELF/Config.h b/lld/ELF/Config.h
index 7bf650c3a33..f06cfbdbacf 100644
--- a/lld/ELF/Config.h
+++ b/lld/ELF/Config.h
@@ -98,6 +98,7 @@ struct Configuration {
bool Mips64EL = false;
bool NoGnuUnique;
bool NoUndefinedVersion;
+ bool Nostdlib;
bool OFormatBinary;
bool Pic;
bool Pie;
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 9b44b1ba6c3..7f1082310db 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -410,6 +410,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
Config->ICF = Args.hasArg(OPT_icf);
Config->NoGnuUnique = Args.hasArg(OPT_no_gnu_unique);
Config->NoUndefinedVersion = Args.hasArg(OPT_no_undefined_version);
+ Config->Nostdlib = Args.hasArg(OPT_nostdlib);
Config->Pie = Args.hasArg(OPT_pie);
Config->PrintGcSections = Args.hasArg(OPT_print_gc_sections);
Config->Relocatable = Args.hasArg(OPT_relocatable);
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp
index c1ce76ccf01..3872d30d248 100644
--- a/lld/ELF/LinkerScript.cpp
+++ b/lld/ELF/LinkerScript.cpp
@@ -870,7 +870,8 @@ void ScriptParser::readPhdrs() {
void ScriptParser::readSearchDir() {
expect("(");
- Config->SearchPaths.push_back(next());
+ if (!Config->Nostdlib)
+ Config->SearchPaths.push_back(next());
expect(")");
}
diff --git a/lld/ELF/Options.td b/lld/ELF/Options.td
index acfba9e4612..d37a41a8fd5 100644
--- a/lld/ELF/Options.td
+++ b/lld/ELF/Options.td
@@ -97,6 +97,9 @@ def lto_O: J<"lto-O">, MetaVarName<"<opt-level>">,
def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
+def nostdlib: F<"nostdlib">,
+ HelpText<"Only search directories specified on the command line">;
+
def no_as_needed: F<"no-as-needed">,
HelpText<"Always DT_NEEDED for shared libraries">;
diff --git a/lld/test/ELF/libsearch.s b/lld/test/ELF/libsearch.s
index 782d755f734..98512cdfd63 100644
--- a/lld/test/ELF/libsearch.s
+++ b/lld/test/ELF/libsearch.s
@@ -85,5 +85,10 @@
// RUN: ld.lld -o %t3 %t.o -L%t.dir -Bstatic -call_shared -lls
// RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=DYNAMIC %s
+// -nostdlib
+// RUN: echo 'SEARCH_DIR(' %t.dir ')' > %t.script
+// RUN: ld.lld -o %t3 %t.o -script %t.script -lls
+// RUN: not ld.lld -o %t3 %t.o -script %t.script -lls -nostdlib
+
.globl _start,_bar
_start:
OpenPOWER on IntegriCloud