diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2014-11-25 06:47:44 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2014-11-25 06:47:44 -0800 |
commit | bb4d2ac2cc637c61232624d9d359b8d3f031e3e9 (patch) | |
tree | e6fd8d2aac7576759a2004c96a167f0f3d3bb267 /ld/testsuite/ld-elf | |
parent | dd7e64d45b317128f5fe813a8da0b13b4ad046ae (diff) | |
download | gdb-bb4d2ac2cc637c61232624d9d359b8d3f031e3e9.zip gdb-bb4d2ac2cc637c61232624d9d359b8d3f031e3e9.tar.gz gdb-bb4d2ac2cc637c61232624d9d359b8d3f031e3e9.tar.bz2 |
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.
Diffstat (limited to 'ld/testsuite/ld-elf')
-rw-r--r-- | ld/testsuite/ld-elf/pr16496a.c | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr16496a.map | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr16496b.c | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr16496b.od | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 9 |
5 files changed, 25 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/pr16496a.c b/ld/testsuite/ld-elf/pr16496a.c new file mode 100644 index 0000000..35e8555 --- /dev/null +++ b/ld/testsuite/ld-elf/pr16496a.c @@ -0,0 +1,4 @@ +void +sd_get_seats (void) +{ +} diff --git a/ld/testsuite/ld-elf/pr16496a.map b/ld/testsuite/ld-elf/pr16496a.map new file mode 100644 index 0000000..d677f37 --- /dev/null +++ b/ld/testsuite/ld-elf/pr16496a.map @@ -0,0 +1,4 @@ +LIBSYSTEMD_209 { +global: + sd_get_seats; +}; diff --git a/ld/testsuite/ld-elf/pr16496b.c b/ld/testsuite/ld-elf/pr16496b.c new file mode 100644 index 0000000..94a0f30 --- /dev/null +++ b/ld/testsuite/ld-elf/pr16496b.c @@ -0,0 +1,5 @@ +void sd_get_seats (void); +void call_sd_get_seats (void) +{ + sd_get_seats (); +} diff --git a/ld/testsuite/ld-elf/pr16496b.od b/ld/testsuite/ld-elf/pr16496b.od new file mode 100644 index 0000000..6fb54c1 --- /dev/null +++ b/ld/testsuite/ld-elf/pr16496b.od @@ -0,0 +1,3 @@ +#... +.* sd_get_seats@LIBSYSTEMD_209 +#pass diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index b55856a..00a4983 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -246,6 +246,15 @@ set build_tests { {"Build dynamic-1" "-Wl,--dynamic-list,dynamic-1.syms -Wl,--gc-sections" "-ffunction-sections" {dynamic-1.c} {{readelf {-s} dynamic-1.rd}} "dynamic-1"} + {"Build libpr16496a.so" + "-shared -Wl,--version-script=pr16496a.map" "-fPIC" + {pr16496a.c} {} "libpr16496a.so"} + {"Build libpr16496b.a" + "" "-fPIC" + {pr16496b.c} {} "libpr16496b.a"} + {"Build libpr16496b.so" + "-shared tmpdir/pr16496b.o tmpdir/libpr16496a.so" "" + {dummy.c} {{objdump {-R} pr16496b.od}} "libpr16496b.so"} } run_cc_link_tests $build_tests |