Display symbol version when dumping dynrelocs
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 25 Nov 2014 14:47:44 +0000 (06:47 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 25 Nov 2014 14:47:44 +0000 (06:47 -0800)
commitbb4d2ac2cc637c61232624d9d359b8d3f031e3e9
treee6fd8d2aac7576759a2004c96a167f0f3d3bb267
parentdd7e64d45b317128f5fe813a8da0b13b4ad046ae
Display symbol version when dumping dynrelocs

Both readelf/objdump know how to get symbol version string for dynamic
symbols.  This patch extracts this functionality into a separate
function and uses it to add symbol version string to versioned symbol
names when dumping dynamic relocations.

bfd/

PR binutils/16496
* elf-bfd.h (bfd_elf_get_symbol_version_string): New.
* elf.c (bfd_elf_get_symbol_version_string): New.  Extracted
from bfd_elf_print_symbol.
(bfd_elf_print_symbol): Use it.

binutils/

PR binutils/16496
* objdump.c (objdump_print_symname): Call
bfd_elf_get_symbol_version_string to get ELF symbol version
string.  Append version string if needed.

* readelf.c (versioned_symbol_info): New enum.
(get_symbol_version_string): New.  Extracted from
process_symbol_table.
(dump_relocations): Add a new argument to indicate if dynamic
symbol table is used.  Use get_symbol_version_string to get
symbol version string for dynamic symbol.  Append version string
if needed.
(process_relocs): Updated dump_relocations call.
(process_symbol_table): Use get_symbol_version_string.

ld/testsuite/

PR binutils/16496
* ld-cris/weakref3.d: Add symbol version string to versioned
symbol names in dynamic relocation.
* ld-cris/weakref4.d: Likewise.
* ld-elfvers/vers24.rd: Likewise.

* ld-elf/pr16496a.c: New file.
* ld-elf/pr16496a.map: Likewise.
* ld-elf/pr16496b.c: Likewise.
* ld-elf/pr16496b.od: Likewise.

* ld-elf/shared.exp (build_tests): Add libpr16496a.so and
libpr16496b.so tests.
15 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf.c
binutils/ChangeLog
binutils/objdump.c
binutils/readelf.c
ld/testsuite/ChangeLog
ld/testsuite/ld-cris/weakref3.d
ld/testsuite/ld-cris/weakref4.d
ld/testsuite/ld-elf/pr16496a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr16496a.map [new file with mode: 0644]
ld/testsuite/ld-elf/pr16496b.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr16496b.od [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp
ld/testsuite/ld-elfvers/vers24.rd