<div dir="ltr">I think it sounds great!  It sounds as if Darwin and Windows does things pretty much the same way.<div><br></div><div>I seem to recall that the linker I worked on actually did it the slow way.  And back then, in 199x, there were absolutely no problems with speed of the linker's resolution algorithm, so I don't think you need to worry about doing it the slow way initially.  Most likely, you'll never need to worry about doing it the fast way.</div>
<div><br></div><div><br></div><div>-- Mikael</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/23 Rui Ueyama <span dir="ltr"><<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks. I don't know if it's the same, but it looks like it's pretty similar. So the ideas to support that (non-Unix) semantics are the same as Nick's.<div>
<br></div><div>1. Implement a new Resolver behavior for Darwin/Windows. The behavior would be like this: Make Resolver to add all symbols from archive files to the symbol table as it processes new files, constructing a gigantic symbol table that contains all the symbols that is already resolved or *could* be resolved in a file that Resolver has seen. For a new object file, Resolver looks up the symbol table for each undefined symbol in an object file, and if it can be resolved in an (unparsed) archive file, parse the archive file, and add the symbols from the file to the symbol table.</div>


<div><br></div><div>2. Create a group for all library files and add it at the end of the input graph, as Nick suggested in that thread.</div><div><br></div><div>So, (2) would be a low-impact change because it won't need any change to the core linker. However it would be slow because it needs to iterate over and over on the same library files until all undefined symbols are resolved. (1) would be faster because the iteration would be replaced by a single hash table lookup, but it'd be a high-impact change.</div>


<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Nov 22, 2013 at 2:38 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On 11/22/2013 4:19 PM, Rui Ueyama wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Fri, Nov 22, 2013 at 2:14 PM, Shankar Easwaran<br>
<<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>><u></u>wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If its doing that, it might be following the Darwin model. The Darwin<br>
model picks up all the object files and puts all the libraries that it<br>
wants to link inside a Group(Snipped from a discussion earlier with Nick).<br>
<br>
</blockquote>
Which thread?<br>
</blockquote>
</div><a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-September/065365.html" target="_blank">http://lists.cs.uiuc.edu/<u></u>pipermail/llvmdev/2013-<u></u>September/065365.html</a><br>
<br>
Thanks<span><font color="#888888"><br>
<br>
Shankar Easwaran<br>
</font></span></blockquote></div><br></div>
</blockquote></div><br></div>