<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">OK, so the default search path is more complicated than I thought.</div><div class="gmail_quote"><br></div><div class="gmail_quote">It seems that gold has built-in search paths that can be configured at ./configure time. I don't think we want to do that because we generally don't solve an issue by adding more knobs and handles which inevitably increase complexity.<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">It is probably the same situation as --dynamic-linker? We expect that the compiler always passes the correct dynamic linker path through the option or we do not create .interp section.</div><div class="gmail_quote"><br></div><div class="gmail_quote">On Tue, Mar 8, 2016 at 9:20 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Sorry, I reverted this.<br>
<br>
The problem is that it broke linking on Fedora 64 bits. There the<br>
default search path should be /lib64 /usr/lib64.<br>
<br>
It is probably better to try to stay out of the business of knowing<br>
the defaults of multiple systems. The vast majority or links are<br>
started by the driver and it passes all the necessary -L options.<br>
<br>
Cheers,<br>
Rafael<br>
<br>
<br>
On 7 March 2016 at 23:06, Rui Ueyama via llvm-commits<br>
<div class=""><div class="h5"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: ruiu<br>
> Date: Mon Mar  7 22:06:27 2016<br>
> New Revision: 262910<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=262910&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=262910&view=rev</a><br>
> Log:<br>
> ELF: Add /lib and /usr/lib as default search paths.<br>
><br>
> GNU ld and gold have these paths as default search paths.<br>
> If you don't want these directories, pass -nostdlib.<br>
><br>
> Added:<br>
>     lld/trunk/test/ELF/Inputs/nostdlib.s<br>
>     lld/trunk/test/ELF/nostdlib.s<br>
> Modified:<br>
>     lld/trunk/ELF/Config.h<br>
>     lld/trunk/ELF/Driver.cpp<br>
>     lld/trunk/ELF/LinkerScript.cpp<br>
>     lld/trunk/ELF/Options.td<br>
><br>
> Modified: lld/trunk/ELF/Config.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=262910&r1=262909&r2=262910&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=262910&r1=262909&r2=262910&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Config.h (original)<br>
> +++ lld/trunk/ELF/Config.h Mon Mar  7 22:06:27 2016<br>
> @@ -67,6 +67,7 @@ struct Configuration {<br>
>    bool Mips64EL = false;<br>
>    bool NoInhibitExec;<br>
>    bool NoUndefined;<br>
> +  bool Nostdlib;<br>
>    bool PrintGcSections;<br>
>    bool Relocatable;<br>
>    bool Shared;<br>
><br>
> Modified: lld/trunk/ELF/Driver.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=262910&r1=262909&r2=262910&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=262910&r1=262909&r2=262910&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Driver.cpp (original)<br>
> +++ lld/trunk/ELF/Driver.cpp Mon Mar  7 22:06:27 2016<br>
> @@ -207,9 +207,6 @@ void LinkerDriver::main(ArrayRef<const c<br>
><br>
>  // Initializes Config members by the command line options.<br>
>  void LinkerDriver::readConfigs(opt::InputArgList &Args) {<br>
> -  for (auto *Arg : Args.filtered(OPT_L))<br>
> -    Config->SearchPaths.push_back(Arg->getValue());<br>
> -<br>
>    std::vector<StringRef> RPaths;<br>
>    for (auto *Arg : Args.filtered(OPT_rpath))<br>
>      RPaths.push_back(Arg->getValue());<br>
> @@ -237,6 +234,7 @@ void LinkerDriver::readConfigs(opt::Inpu<br>
>    Config->ICF = Args.hasArg(OPT_icf);<br>
>    Config->NoInhibitExec = Args.hasArg(OPT_noinhibit_exec);<br>
>    Config->NoUndefined = Args.hasArg(OPT_no_undefined);<br>
> +  Config->Nostdlib = Args.hasArg(OPT_nostdlib);<br>
>    Config->PrintGcSections = Args.hasArg(OPT_print_gc_sections);<br>
>    Config->Relocatable = Args.hasArg(OPT_relocatable);<br>
>    Config->Shared = Args.hasArg(OPT_shared);<br>
> @@ -279,6 +277,14 @@ void LinkerDriver::readConfigs(opt::Inpu<br>
><br>
>    for (auto *Arg : Args.filtered(OPT_undefined))<br>
>      Config->Undefined.push_back(Arg->getValue());<br>
> +<br>
> +  if (!Config->Nostdlib) {<br>
> +    Config->SearchPaths.push_back("=/lib");<br>
> +    Config->SearchPaths.push_back("=/usr/lib");<br>
> +  }<br>
> +<br>
> +  for (auto *Arg : Args.filtered(OPT_L))<br>
> +    Config->SearchPaths.push_back(Arg->getValue());<br>
>  }<br>
><br>
>  void LinkerDriver::createFiles(opt::InputArgList &Args) {<br>
><br>
> Modified: lld/trunk/ELF/LinkerScript.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=262910&r1=262909&r2=262910&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=262910&r1=262909&r2=262910&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/LinkerScript.cpp (original)<br>
> +++ lld/trunk/ELF/LinkerScript.cpp Mon Mar  7 22:06:27 2016<br>
> @@ -396,7 +396,9 @@ void ScriptParser::readOutputFormat() {<br>
><br>
>  void ScriptParser::readSearchDir() {<br>
>    expect("(");<br>
> -  Config->SearchPaths.push_back(next());<br>
> +  StringRef Path = next();<br>
> +  if (!Config->Nostdlib)<br>
> +    Config->SearchPaths.push_back(Path);<br>
>    expect(")");<br>
>  }<br>
><br>
><br>
> Modified: lld/trunk/ELF/Options.td<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=262910&r1=262909&r2=262910&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=262910&r1=262909&r2=262910&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Options.td (original)<br>
> +++ lld/trunk/ELF/Options.td Mon Mar  7 22:06:27 2016<br>
> @@ -91,6 +91,9 @@ def noinhibit_exec : Flag<["--"], "noinh<br>
>  def no_undefined : Flag<["--"], "no-undefined">,<br>
>    HelpText<"Report unresolved symbols even if the linker is creating a shared library">;<br>
><br>
> +def nostdlib: Flag<["-", "--"], "nostdlib">,<br>
> +  HelpText<"Only search directories specified on the command line">;<br>
> +<br>
>  def o : JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">,<br>
>    HelpText<"Path to file to write output">;<br>
><br>
><br>
> Added: lld/trunk/test/ELF/Inputs/nostdlib.s<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/nostdlib.s?rev=262910&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/nostdlib.s?rev=262910&view=auto</a><br>
> ==============================================================================<br>
> --- lld/trunk/test/ELF/Inputs/nostdlib.s (added)<br>
> +++ lld/trunk/test/ELF/Inputs/nostdlib.s Mon Mar  7 22:06:27 2016<br>
> @@ -0,0 +1,3 @@<br>
> +.globl foo<br>
> +foo:<br>
> +  ret<br>
><br>
> Added: lld/trunk/test/ELF/nostdlib.s<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/nostdlib.s?rev=262910&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/nostdlib.s?rev=262910&view=auto</a><br>
> ==============================================================================<br>
> --- lld/trunk/test/ELF/nostdlib.s (added)<br>
> +++ lld/trunk/test/ELF/nostdlib.s Mon Mar  7 22:06:27 2016<br>
> @@ -0,0 +1,16 @@<br>
> +# REQUIRES: x86<br>
> +<br>
> +# RUN: mkdir -p %t.dir/lib<br>
> +# RUN: mkdir -p %t.dir/usr/lib<br>
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o<br>
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/nostdlib.s -o %t2.o<br>
> +# RUN: ld.lld -shared -o %t.dir/lib/libfoo.so %t2.o<br>
> +# RUN: ld.lld -shared -o %t.dir/usr/lib/libbar.so %t2.o<br>
> +# RUN: ld.lld --sysroot=%t.dir -o %t %t1.o -lfoo<br>
> +# RUN: ld.lld --sysroot=%t.dir -o %t %t1.o -lbar<br>
> +# RUN: not ld.lld --sysroot=%t.dir -nostdlib -o %t %t1.o -lfoo<br>
> +# RUN: not ld.lld --sysroot=%t.dir -nostdlib -o %t %t1.o -lbar<br>
> +<br>
> +.globl _start<br>
> +_start:<br>
> +  ret<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div></div>