aboutsummaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-02-28 10:38:51 +1030
committerAlan Modra <amodra@gmail.com>2017-02-28 13:20:21 +1030
commit4ef97a1b459849ad190244c36b36d45bdd078030 (patch)
tree3d3e947ad822afec5592b9af6abb1a532fd4c2f2 /bfd/ChangeLog
parent7ba71655a425ac44721f97cc0ad7922ca15bce43 (diff)
downloadgdb-4ef97a1b459849ad190244c36b36d45bdd078030.zip
gdb-4ef97a1b459849ad190244c36b36d45bdd078030.tar.gz
gdb-4ef97a1b459849ad190244c36b36d45bdd078030.tar.bz2
Nios2 dynobj handling fixes
A number of places in elf32-nios.c created dynamic sections but didn't set the hash table dynobj. That meant we could have duplicate dynamic sections connected to a number of bfds, so size_dynamic_sections didn't properly discard or allocate contents. Also, the entire set of dynamic sections was created in check_relocs on seeing GOT relocs, when only .got related sections are needed, probably done to hide segfaults later in finish_dynamic_sections. The patch fixes these issues and makes the assembler emit errors when nios2 lacks the necessary pc-relative relocs for subtraction expressions, rather than silently generating bad code. eg. ld-elf/merge. I've also tidied uses of elf32_nios2_hash_table and elf_hash_table. bfd/ PR 20995 * elf32-nios2.c (nios2_elf32_relocate_section): Use htab rather than elf32_nios2_hash_table or elf_hash_table. (create_got_section): Likewise. (nios2_elf32_finish_dynamic_symbol): Likewise. (nios2_elf32_adjust_dynamic_symbol): Likewise. (nios2_elf32_size_dynamic_sections): Likewise. (nios2_elf32_check_relocs): Delete dynobj, sgot, and srelgot vars. Use htab equivalents directly instead. Don't create all dynamic sections on needing just the GOT. Use a goto rather than a fall-through with reloc test. Ensure htab->dynobj is set when making dynamic sreloc section. (nios2_elf32_finish_dynamic_sections): Delete dynobj, use htab equivalent directly instead. Don't segfault on looking for .dynamic when dynamic sections have not been created. Don't segfault on .got.plt being discarded. (nios2_elf32_size_dynamic_sections): Delete plt and got vars. Don't set "relocs" on .rela.plt. Do handle .sbss. Delete fixme and another not so relevant comment. (nios2_elf_add_symbol_hook): Delete dynobj var. If not already set, set hash table dynobj on creating .sbss. gas/ * config/tc-nios2.h (TC_FORCE_RELOCATION_SUB_LOCAL): Define. ld/ * testsuite/ld-elf/merge.d: xfail for nios.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog24
1 files changed, 24 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2ae29b3..68fb27e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,29 @@
2017-02-28 Alan Modra <amodra@gmail.com>
+ PR 20995
+ * elf32-nios2.c (nios2_elf32_relocate_section): Use htab
+ rather than elf32_nios2_hash_table or elf_hash_table.
+ (create_got_section): Likewise.
+ (nios2_elf32_finish_dynamic_symbol): Likewise.
+ (nios2_elf32_adjust_dynamic_symbol): Likewise.
+ (nios2_elf32_size_dynamic_sections): Likewise.
+ (nios2_elf32_check_relocs): Delete dynobj, sgot, and srelgot
+ vars. Use htab equivalents directly instead. Don't create
+ all dynamic sections on needing just the GOT. Use a goto
+ rather than a fall-through with reloc test. Ensure
+ htab->dynobj is set when making dynamic sreloc section.
+ (nios2_elf32_finish_dynamic_sections): Delete dynobj, use htab
+ equivalent directly instead. Don't segfault on looking for
+ .dynamic when dynamic sections have not been created. Don't
+ segfault on .got.plt being discarded.
+ (nios2_elf32_size_dynamic_sections): Delete plt and got vars.
+ Don't set "relocs" on .rela.plt. Do handle .sbss. Delete
+ fixme and another not so relevant comment.
+ (nios2_elf_add_symbol_hook): Delete dynobj var. If not
+ already set, set hash table dynobj on creating .sbss.
+
+2017-02-28 Alan Modra <amodra@gmail.com>
+
* reloc.c (BFD_RELOC_PPC_16DX_HA): New.
* elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_16DX_HA>): New howto.
(ppc64_elf_reloc_type_lookup): Translate new bfd reloc.