[PATCH 2/2] bfd/elfnn-aarch64.c: Handle static links with ifunc correctly.

Marcus Shawcroft marcus.shawcroft@arm.com
Tue Nov 26 11:51:00 GMT 2013


On 26/11/13 10:39, Will Newton wrote:
> On 26 November 2013 10:34, Marcus Shawcroft <marcus.shawcroft@gmail.com> wrote:
>> On 26 November 2013 08:54, Will Newton <will.newton@linaro.org> wrote:
>>
>>> -      if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h))
>>> +      if (h->def_regular
>>> +         && h->type == STT_GNU_IFUNC)
>>> +       {
>>> +         if (info->shared)
>>> +           {
>>> +             /* Generate R_AARCH64_GLOB_DAT.  */
>>> +             goto do_glob_dat;
>>> +           }
>>> +         else
>>> +           {
>>> +             asection *plt;
>>> +
>>> +             if (!h->pointer_equality_needed)
>>> +               abort ();
>>
>> Is abort() the best option here, can't we spit out a diagnostic and return?
>
> I believe it is really an assert as _bfd_elf_allocate_ifunc_dyn_relocs
> ensures this condition does not occur. The code is copied from
> i386/x86_64 for better or worse - I am never quite sure whether it is
> better to be the same or different in these cases. ;-)

If you are confident it is an assert then I'm happy to leave the code 
the same as the donor.  In which case this is OK for trunk.

I'd like to see these two IFUNC patches in 2.24, Tristan ?

Cheers
/Marcus



More information about the Binutils mailing list