[llvm-dev] lld: --start-lib and --end-lib
Sean Silva via llvm-dev
llvm-dev at lists.llvm.org
Wed Apr 6 13:12:41 PDT 2016
On Wed, Apr 6, 2016 at 1:08 PM, Sean Silva <chisophugis at gmail.com> wrote:
>
>
> On Tue, Apr 5, 2016 at 9:07 PM, Rui Ueyama via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> I hacked up a patch to support --start-lib and --end-lib in the second
>> way.
>>
>> http://reviews.llvm.org/D18814
>>
>> 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.
>>
>
> Have you tried creating a thin archive in memory and loading it in the
> normal way? That seems potentially simpler.
>
Nevermind, that would require doing a bunch of redundant work building the
archive symbol table.
-- Sean Silva
>
> -- Sean Silva
>
>
>>
>> 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.
>>
>> On Tue, Apr 5, 2016 at 7:51 PM, Rui Ueyama <ruiu at google.com> wrote:
>>
>>> Rafael,
>>>
>>> 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. :)
>>>
>>> What is the intended use case of the options? Do you think we should
>>> support that in LLD?
>>>
>>> If we want to support that, then I think we can think of two
>>> implementation strategies:
>>>
>>> - Link object files between --start-lib and --end-lib normally and
>>> garbage collect unused sections, or
>>> - create lazy symbols for object files between --start-lib and
>>> --end-lib and handle just like archive files.
>>>
>>> What do you think?
>>>
>>> *1 https://sourceware.org/ml/binutils/2010-03/msg00233.html
>>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160406/5c854b54/attachment-0001.html>
More information about the llvm-dev
mailing list