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. ;-)