From 3d044c0c78c11968b4fe3c5c019523e3177b1710 Mon Sep 17 00:00:00 2001 From: Sheldon Lobo Date: Tue, 7 Feb 2017 06:05:59 -0800 Subject: [PATCH] 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 Fix sparc64 dynamic relocation processing to use the dynamic symbol count. * 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. --- bfd/ChangeLog | 8 ++++++++ bfd/elf64-sparc.c | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3f9bbd192aa..8d21e0401e7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2017-02-06 Sheldon Lobo + + Fix sparc64 dynamic relocation processing to use the dynamic + symbol count. + * 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. + 2017-02-03 Nick Clifton PR 21096 diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c index ac66ab1a771..0190bd23a98 100644 --- a/bfd/elf64-sparc.c +++ b/bfd/elf64-sparc.c @@ -99,7 +99,9 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect, if (ELF64_R_SYM (rela.r_info) == STN_UNDEF /* PR 17512: file: 996185f8. */ - || ELF64_R_SYM (rela.r_info) > bfd_get_symcount (abfd)) + || (!dynamic && ELF64_R_SYM(rela.r_info) > bfd_get_symcount(abfd)) + || (dynamic + && ELF64_R_SYM(rela.r_info) > bfd_get_dynamic_symcount(abfd))) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { -- 2.30.2