GNU Binutils with patches for OS216
修订版 | 3d044c0c78c11968b4fe3c5c019523e3177b1710 (tree) |
---|---|
时间 | 2017-02-07 23:05:59 |
作者 | Sheldon Lobo <sheldon.lobo@orac...> |
Commiter | Jose E. Marchesi |
bfd: Fix objdump --dynamic-reloc for SPARC 64-bit to show symbol names.
Fixes ld/testsuite/ld-elf/shared.exp "Build libpr16496b.so".
The root cause is in bfd/elf64-sparc.c, elf64_sparc_slurp_one_reloc_table(),
bfd_get_symcount() was used for dynamic mode as well. The fix is to use
bfd_get_dynamic_symcount().
This has been tested with sparc64-linux-gnu, and it does not introduce any
regressions.
bfd/ChangeLog:
2017-02-06 Sheldon Lobo <sheldon.lobo@oracle.com>
Fix sparc64 dynamic relocation processing to use the dynamic
* elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Use 'dynamic'
to determine if bfd_get_symcount() or bfd_get_dynamic_symcount()
should be used.
@@ -1,3 +1,11 @@ | ||
1 | +2017-02-06 Sheldon Lobo <sheldon.lobo@oracle.com> | |
2 | + | |
3 | + Fix sparc64 dynamic relocation processing to use the dynamic | |
4 | + symbol count. | |
5 | + * elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Use 'dynamic' | |
6 | + to determine if bfd_get_symcount() or bfd_get_dynamic_symcount() | |
7 | + should be used. | |
8 | + | |
1 | 9 | 2017-02-03 Nick Clifton <nickc@redhat.com> |
2 | 10 | |
3 | 11 | PR 21096 |
@@ -99,7 +99,9 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect, | ||
99 | 99 | |
100 | 100 | if (ELF64_R_SYM (rela.r_info) == STN_UNDEF |
101 | 101 | /* PR 17512: file: 996185f8. */ |
102 | - || ELF64_R_SYM (rela.r_info) > bfd_get_symcount (abfd)) | |
102 | + || (!dynamic && ELF64_R_SYM(rela.r_info) > bfd_get_symcount(abfd)) | |
103 | + || (dynamic | |
104 | + && ELF64_R_SYM(rela.r_info) > bfd_get_dynamic_symcount(abfd))) | |
103 | 105 | relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; |
104 | 106 | else |
105 | 107 | { |