[PATCH] PR ld/20103: Skip an archive element if not added by linker

H.J. Lu hjl.tools@gmail.com
Tue May 24 17:59:00 GMT 2016


On Mon, May 23, 2016 at 7:29 AM, Alan Modra <amodra@gmail.com> wrote:
> On Wed, May 18, 2016 at 05:10:55AM -0700, H.J. Lu wrote:
>> On Tue, May 17, 2016 at 11:49 PM, Alan Modra <amodra@gmail.com> wrote:
>> > On Tue, May 17, 2016 at 07:24:08PM -0700, H.J. Lu wrote:
>> >> During archive rescan to resolve symbol references for files added by
>> >> LTO, linker add_archive_element callback is called to check if an
>> >> archive element should added.  After all IR symbols have been claimed,
>> >> linker won't claim new IR symbols and shouldn't add the LTO archive
>> >> element.  This patch updates linker add_archive_element callback to
>> >> return FALSE when seeing an LTO archive element during rescan and
>> >> changes ELF linker to skip such archive element.  Other linker backends
>> >> may also need similar update.
>> >>
>> >> Tested on x86.  OK for master?
>> >
>> > Not without a lot more explanation and justification why this is
>> > correct, in particular the plugin_call_claim_file change.
>> >
>>
>> plugin_call_claim_file is only called from plugin_object_p to check
>> if an input is IR, not really claim symbols. which is done by
>> plugin_call_all_symbols_read, which sets no_more_claiming.  Whether
>> an input is an IR file is independent of if there is more IR symbols to
>> claim.
>>
>> During archive rescan, if plugin_object_p rejects an IR archive element,
>> linker will treat it as a non-IR element, which leads to error.  In stead
>> plugin_object_p should always accept an IR object,  We won't claim the
>> IR symbols when no_more_claiming is set. My change just makes linker
>> consistent on whether an input file is an IR file.
>
> OK, I've now had a look at everything and I think your patch is OK
> if you edit every file that calls add_archive_element.  You can't
> change a pass/fail return status to add/don't add and not change all
> users of the function.
>

Here is the updated patch.  OK for master?

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Skip-an-archive-element-if-not-added-by-linker.patch
Type: text/x-patch
Size: 10779 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20160524/92d2c630/attachment.bin>


More information about the Binutils mailing list