<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 5, 2016 at 9:07 PM, Rui Ueyama via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I hacked up a patch to support --start-lib and --end-lib in the second way.<div><br></div><div><a href="http://reviews.llvm.org/D18814" target="_blank">http://reviews.llvm.org/D18814</a><br></div><div><br></div><div>In this patch, I introduced a new notion, LazyObject. That is analogous to Archive file type, but that works for a single object file instead of an archive file. This patch is +160 and -26 lines, so I can say that it is pretty simple.</div></div></blockquote><div><br></div><div>Have you tried creating a thin archive in memory and loading it in the normal way? That seems potentially simpler.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>This is not directly related to --start-lib and --end-lib, but LazyObject may be useful for --gc-sections as well. This is the suggestion I got in the EuroLLVM 2016 meeting (I'm sorry but I don't remember who his name), but he suggested handling all object files as lazy object files for --gc-sections. It means by default no object files are linked. The entry point symbol would link one object file, and that triggers all used object files to be instantiated. I think this is very interesting idea because we don't need to do mark-sweep garbage collection to do --gc-sections; instead, everything will be linked only when they are needed.</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 5, 2016 at 7:51 PM, Rui Ueyama <span dir="ltr"><<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Rafael,<div><br></div><div>You seems to be the person who added --start-lib and --end-lib to gold (*1), so I think you are the best person to ask about it. :)</div><div><br></div><div>What is the intended use case of the options? Do you think we should support that in LLD?</div><div><br></div><div>If we want to support that, then I think we can think of two implementation strategies:</div><div><br></div><div> - Link object files between --start-lib and --end-lib normally and garbage collect unused sections, or</div><div> - create lazy symbols for object files between --start-lib and --end-lib and handle just like archive files.</div><div><br></div><div>What do you think?</div><div><br></div><div>*1 <a href="https://sourceware.org/ml/binutils/2010-03/msg00233.html" target="_blank">https://sourceware.org/ml/binutils/2010-03/msg00233.html</a></div></div>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>