<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Apr 7, 2014 at 3:32 AM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Sun, Apr 06, 2014 at 09:58:13PM -0700, Rui Ueyama wrote:<br>
> Currently LLD ignores undefined symbols found in DSOs when linking against<br>
> DSO files, if -shared flag is given. Internally, it's achieved by enabling<br>
> "useShlibUndefines" flag, which makes the file reader to ignore all undefined<br>
> symbols in DSO, so that Resolver don't see any undefined symbols when<br>
> handling DSO files.<br>
<br>
</div>I don't think your patch fixes the real issue. The correct behavior<br>
is:<br>
<br>
(1) If the undefined symbol comes from an object file (or archive<br>
library), it is a true undefined symbol. In this case, the behavior<br>
depends on (a) -z defs (b) the output type. For shared libraries,<br>
undefined symbols are by default not fatal, for executables, they are.<br></blockquote><div><br></div><div>That's I believe already implemetned correctly. Please take a look at GnuLdDriver.cpp:295.</div><div><br></div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
(2) Undefined symbols in shared libraries pulled in via -l are ignored.<br></blockquote><div><br></div><div>By "ignored", I'd think you mean "undefined symbol from library is not fatal", right? GNU LD does not completely ignore undefined symbols from library files, they instead just don't warn on remaining undefined symbols if they are from a library. GNU LD tries to resolve undefined symbols even if they are from library.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
(3) For ELF, shared libraries are processed recursively.<br></blockquote><div><br></div><div>Are you talking about runtime behavior? Could you elaborate a bit?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


Joerg<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>