diff options
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf32-nios2.c | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8aa3893..08f8a50 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 2020-06-03 H.J. Lu <hongjiu.lu@intel.com> + PR ld/26066 + * elf32-nios2.c (nios2_elf32_check_relocs): Skip non-loaded, + non-alloced sections. + +2020-06-03 H.J. Lu <hongjiu.lu@intel.com> + * elf32-frv.c (elf32_frv_relocate_section): Don't generate dynamic relocations for non SEC_ALLOC sections. diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index aabec1d..453b7cf 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -4689,6 +4689,15 @@ nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info, if (bfd_link_relocatable (info)) return TRUE; + /* Don't do anything special with non-loaded, non-alloced sections. + In particular, any relocs in such sections should not affect GOT + and PLT reference counting (ie. we don't allow them to create GOT + or PLT entries), there's no possibility or desire to optimize TLS + relocs, and there's not much point in propagating relocs to shared + libs that the dynamic linker won't relocate. */ + if ((sec->flags & SEC_ALLOC) == 0) + return TRUE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); sym_hashes_end = (sym_hashes |