diff options
Diffstat (limited to 'bfd/elf64-x86-64.c')
-rw-r--r-- | bfd/elf64-x86-64.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index a4dfdc8..4b83032 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -3786,8 +3786,16 @@ elf_x86_64_relocate_section (bfd *output_bfd, bfd_vma plt_index; const char *name; - if ((input_section->flags & SEC_ALLOC) == 0 - || h->plt.offset == (bfd_vma) -1) + if ((input_section->flags & SEC_ALLOC) == 0) + { + /* Dynamic relocs are not propagated for SEC_DEBUGGING + sections because such sections are not SEC_ALLOC and + thus ld.so will not process them. */ + if ((input_section->flags & SEC_DEBUGGING) != 0) + break; + abort (); + } + else if (h->plt.offset == (bfd_vma) -1) abort (); /* STT_GNU_IFUNC symbol must go through PLT. */ |