Add -nostdlib.
authorRui Ueyama <ruiu@google.com>
Fri, 2 Sep 2016 19:20:33 +0000 (19:20 +0000)
committerRui Ueyama <ruiu@google.com>
Fri, 2 Sep 2016 19:20:33 +0000 (19:20 +0000)
llvm-svn: 280528

lld/ELF/Config.h
lld/ELF/Driver.cpp
lld/ELF/LinkerScript.cpp
lld/ELF/Options.td
lld/test/ELF/libsearch.s

index 7bf650c3a335f7a167c58a85882c6925f5a87530..f06cfbdbacfb190e47e13e73cabd257e5a28e3cd 100644 (file)
@@ -98,6 +98,7 @@ struct Configuration {
   bool Mips64EL = false;
   bool NoGnuUnique;
   bool NoUndefinedVersion;
+  bool Nostdlib;
   bool OFormatBinary;
   bool Pic;
   bool Pie;
index 9b44b1ba6c37f7dfce6f2ece8e06c364437223cc..7f1082310db72da7989ea7575dcdaf3af7cf9d22 100644 (file)
@@ -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);
index c1ce76ccf01080bdac8c531ed9fda2a26cd8995f..3872d30d2488314e9c7190a0353ad01917391d4a 100644 (file)
@@ -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(")");
 }
 
index acfba9e4612f9b82a58191bc4c94af678f16bd01..d37a41a8fd569c8daa5fdc8915e2f4540f6e0a6d 100644 (file)
@@ -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">;
 
index 782d755f73413571e3898205309b42c71b134c18..98512cdfd636a6b77deb9f9d42e92983883e9dbe 100644 (file)
 // 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: