http://sourceware.org/bugzilla/show_bug.cgi?id=14590

             Bug #: 14590
           Summary: ifunc problem: internal error, aborting at
                    elf64-x86-64.c line 3175 in
                    elf_x86_64_relocate_section
           Product: binutils
           Version: 2.24 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: unassig...@sourceware.org
        ReportedBy: m...@suse.de
    Classification: Unclassified


% cat x.c
#include <stdio.h>
int index;
int main() {
    index=getchar();
    return index;
}
% gcc -fno-builtin -static -g x.c
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: BFD
(GNU Binutils; devel:gcc / SLE-11) 2.22 internal error, aborting at
../../bfd/elf64-x86-64.c line 3094 in elf_x86_64_relocate_section

This is a problem also with older binutils.  This requires a libc which has
the symbol 'index' defined as weak ifunc:

    18: 0000000000000000    41 IFUNC   WEAK   DEFAULT    1 index

It only happens when linking statically.  The abort is this one:

3170              bfd_vma plt_index;
3171              const char *name;
3172
3173              if ((input_section->flags & SEC_ALLOC) == 0
3174                  || h->plt.offset == (bfd_vma) -1)
3175                abort ();

The reference this is about is from .debug_info (i.e. !SEC_ALLOC), hence
the abort.  I don't know why it things it finds the ifunc definition
first (h->type is STT_GNU_IFUNC here), not the one in the COMMON section.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to