aboutsummaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorQing Zhao <qing.zhao@oracle.com>2017-04-10 12:46:30 +0100
committerNick Clifton <nickc@redhat.com>2017-04-10 12:46:30 +0100
commitbb1dd176fb6f38ae3cc30dc61ce55a7fbf9d0d7b (patch)
tree5d40f7782e03bff6ab313eeeb07110fe7f8af01a /bfd/ChangeLog
parentd236cfd444630bd9ddb63edca54c056d5825e673 (diff)
downloadgdb-bb1dd176fb6f38ae3cc30dc61ce55a7fbf9d0d7b.zip
gdb-bb1dd176fb6f38ae3cc30dc61ce55a7fbf9d0d7b.tar.gz
gdb-bb1dd176fb6f38ae3cc30dc61ce55a7fbf9d0d7b.tar.bz2
Port the bug fix for PR 19704 (Missing dynamic relocation against undefined weak symbol) to the SPARC architecture.
* elf32-sparc.c (elf_backend_fixup_symbol): New. * elf64-sparc.c (elf_backend_fixup_symbol): New. * elfxx-sparc.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (_bfd_sparc_elf_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (_bfd_sparc_elf_size_dynamic_sections): Set interp to .interp section. (_bfd_sparc_elf_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (_bfd_sparc_elf_check_relocs): Set has_got_reloc and has_non_got_reloc. (_bfd_sparc_elf_fixup_symbol): New function. (allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. Keep dynamic non-GOT/non-PLT relocation against undefined weak symbols in PIE. (_bfd_sparc_elf_relocate_section): Don't generate dynamic relocations against resolved undefined weak symbols in PIE (_bfd_sparc_elf_finish_dynamic_symbol): Keep PLT/GOT entries without ynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (pie_finish_undefweak_symbol): New function. (_bfd_sparc_elf_finish_dynamic_sections): Call pie_finish_undefweak_symbol on all symbols in PIE. * elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add interp. (_bfd_sparc_elf_fixup_symbol): New function.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog34
1 files changed, 34 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d22c885..d046562 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,37 @@
+2017-04-10 Qing Zhao <qing.zhao@oracle.com>
+
+ * elf32-sparc.c (elf_backend_fixup_symbol): New.
+ * elf64-sparc.c (elf_backend_fixup_symbol): New.
+ * elfxx-sparc.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New.
+ (_bfd_sparc_elf_link_hash_entry): Add has_got_reloc and
+ has_non_got_reloc.
+ (link_hash_newfunc): Initialize has_got_reloc and
+ has_non_got_reloc.
+ (_bfd_sparc_elf_size_dynamic_sections): Set interp to .interp
+ section.
+ (_bfd_sparc_elf_copy_indirect_symbol): Copy has_got_reloc and
+ has_non_got_reloc.
+ (_bfd_sparc_elf_check_relocs): Set has_got_reloc and
+ has_non_got_reloc.
+ (_bfd_sparc_elf_fixup_symbol): New function.
+ (allocate_dynrelocs): Don't allocate space for dynamic
+ relocations and discard relocations against resolved undefined
+ weak symbols in executable. Don't make resolved undefined weak
+ symbols in executable dynamic. Keep dynamic non-GOT/non-PLT
+ relocation against undefined weak symbols in PIE.
+ (_bfd_sparc_elf_relocate_section): Don't generate dynamic
+ relocations against resolved undefined weak symbols in PIE
+ (_bfd_sparc_elf_finish_dynamic_symbol): Keep PLT/GOT entries
+ without ynamic PLT/GOT relocations for resolved undefined weak
+ symbols.
+ Don't generate dynamic relocation against resolved undefined
+ weak symbol in executable.
+ (pie_finish_undefweak_symbol): New function.
+ (_bfd_sparc_elf_finish_dynamic_sections): Call
+ pie_finish_undefweak_symbol on all symbols in PIE.
+ * elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add interp.
+ (_bfd_sparc_elf_fixup_symbol): New function.
+
2017-04-10 Nick Clifton <nickc@redhat.com>
* config.bfd: Remove ns32k from obsolete list.