[hjl@gnu-6 pr16477]$ make clean rm -f *.o [hjl@gnu-6 pr16477]$ cat liba.c const char* sd_get_seats(void) {return "bla bla";} [hjl@gnu-6 pr16477]$ cat liba.sym LIBSYSTEMD_209 { global: sd_get_seats; }; [hjl@gnu-6 pr16477]$ cat libb.c #include "linkwarning.h" void new_sd_get_seats(void); __asm__(".symver new_sd_get_seats,sd_get_seats@LIBSYSTEMD_209"); static void (*resolve_sd_get_seats(void)) (void) { return new_sd_get_seats; } void sd_get_seats(void) __attribute__((ifunc("resolve_sd_get_seats"))); link_warning(sd_get_seats, "sd_get_seats is obsolete"); [hjl@gnu-6 pr16477]$ cat libb.sym LIBSYSTEMD_208 { global: sd_get_seats; }; [hjl@gnu-6 pr16477]$ make libb.so gcc -B./ -O -g -fPIC -c -o libb.o libb.c gcc -B./ -O -g -fPIC -c -o liba.o liba.c gcc -B./ -o liba.so -shared liba.o -Wl,--version-script=liba.sym gcc -B./ -o libb.so -shared libb.o liba.so -Wl,--version-script=libb.sym [hjl@gnu-6 pr16477]$ objdump -R libb.so libb.so: file format elf64-x86-64 DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE 00000000002007c8 R_X86_64_RELATIVE *ABS*+0x00000000000006e0 00000000002007d0 R_X86_64_RELATIVE *ABS*+0x00000000000006a0 00000000002007e0 R_X86_64_RELATIVE *ABS*+0x00000000002007e0 00000000002009d8 R_X86_64_GLOB_DAT _ITM_deregisterTMCloneTable 00000000002009e0 R_X86_64_GLOB_DAT __gmon_start__ 00000000002009e8 R_X86_64_GLOB_DAT sd_get_seats 00000000002009f0 R_X86_64_GLOB_DAT _Jv_RegisterClasses 00000000002009f8 R_X86_64_GLOB_DAT _ITM_registerTMCloneTable 0000000000200a00 R_X86_64_GLOB_DAT __cxa_finalize 0000000000200a20 R_X86_64_JUMP_SLOT __gmon_start__ 0000000000200a28 R_X86_64_JUMP_SLOT __cxa_finalize [hjl@gnu-6 pr16477]$ readelf -rs libb.so Relocation section '.rela.dyn' at offset 0x4d8 contains 9 entries: Offset Info Type Sym. Value Sym. Name + Addend 0000002007c8 000000000008 R_X86_64_RELATIVE 6e0 0000002007d0 000000000008 R_X86_64_RELATIVE 6a0 0000002007e0 000000000008 R_X86_64_RELATIVE 2007e0 0000002009d8 000200000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTMClone + 0 0000002009e0 000300000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 0000002009e8 000400000006 R_X86_64_GLOB_DAT 0000000000000000 sd_get_seats + 0 0000002009f0 000500000006 R_X86_64_GLOB_DAT 0000000000000000 _Jv_RegisterClasses + 0 0000002009f8 000600000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTa + 0 000000200a00 000700000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize + 0 Relocation section '.rela.plt' at offset 0x5b0 contains 2 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000200a20 000300000007 R_X86_64_JUMP_SLO 0000000000000000 __gmon_start__ + 0 000000200a28 000700000007 R_X86_64_JUMP_SLO 0000000000000000 __cxa_finalize + 0 Symbol table '.dynsym' contains 15 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000000005e0 0 SECTION LOCAL DEFAULT 10 2: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND sd_get_seats@LIBSYSTEMD_209 (3) 5: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (4) 8: 0000000000200a30 0 NOTYPE GLOBAL DEFAULT 23 _edata 9: 0000000000200a38 0 NOTYPE GLOBAL DEFAULT 24 _end 10: 0000000000000715 8 IFUNC GLOBAL DEFAULT 12 sd_get_seats@@LIBSYSTEMD_208 11: 0000000000200a30 0 NOTYPE GLOBAL DEFAULT 24 __bss_start 12: 00000000000005e0 0 FUNC GLOBAL DEFAULT 10 _init 13: 0000000000000720 0 FUNC GLOBAL DEFAULT 13 _fini 14: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_208 I am expecting sd_get_seats@LIBSYSTEMD_209 in dynamic relocation instead of sd_get_seats.
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, hjl/pr16496 has been created at d6eca2f91c1a79ed97d2df4b4614631ad7834cd8 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d6eca2f91c1a79ed97d2df4b4614631ad7834cd8 commit d6eca2f91c1a79ed97d2df4b4614631ad7834cd8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jan 24 04:52:05 2014 -0800 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. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, hjl/pr16496 has been created at aba61d1ceb6ed10b3f755adfe902af83c7b51b72 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aba61d1ceb6ed10b3f755adfe902af83c7b51b72 commit aba61d1ceb6ed10b3f755adfe902af83c7b51b72 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jan 26 08:47:06 2014 -0800 Move ChangeLog entries to ChangeLog.pr16467 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=42478d68639fcb10952a94e5a4d32d8ea18c953a commit 42478d68639fcb10952a94e5a4d32d8ea18c953a Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jan 24 04:52:05 2014 -0800 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. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, hjl/pr16496 has been created at 3814a7515eb08dd6d2eb75969a2756efffc5809d (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3814a7515eb08dd6d2eb75969a2756efffc5809d commit 3814a7515eb08dd6d2eb75969a2756efffc5809d Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jan 26 08:47:06 2014 -0800 Move ChangeLog entries to ChangeLog.pr16496 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=42478d68639fcb10952a94e5a4d32d8ea18c953a commit 42478d68639fcb10952a94e5a4d32d8ea18c953a Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jan 24 04:52:05 2014 -0800 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. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, hjl/pr16496 has been created at 8e0506cd53b38f978c5297978a5dcc046468b864 (commit) - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8e0506cd53b38f978c5297978a5dcc046468b864 commit 8e0506cd53b38f978c5297978a5dcc046468b864 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sun Jan 26 08:47:06 2014 -0800 Move ChangeLog entries to ChangeLog.pr16496 https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8c19f637403eb49fc9b9f0ed2b2b8375c33e5499 commit 8c19f637403eb49fc9b9f0ed2b2b8375c33e5499 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jan 24 04:52:05 2014 -0800 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. -----------------------------------------------------------------------
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, master has been updated via bb4d2ac2cc637c61232624d9d359b8d3f031e3e9 (commit) from dd7e64d45b317128f5fe813a8da0b13b4ad046ae (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bb4d2ac2cc637c61232624d9d359b8d3f031e3e9 commit bb4d2ac2cc637c61232624d9d359b8d3f031e3e9 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Nov 25 06:47:44 2014 -0800 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. ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 8 + bfd/elf-bfd.h | 2 + bfd/elf.c | 92 +++-- binutils/ChangeLog | 17 + binutils/objdump.c | 23 +- binutils/readelf.c | 393 ++++++++++++-------- ld/testsuite/ChangeLog | 16 + ld/testsuite/ld-cris/weakref3.d | 4 +- ld/testsuite/ld-cris/weakref4.d | 2 +- ld/testsuite/ld-elf/pr16496a.c | 4 + .../{ld-ifunc/pr16467a.map => ld-elf/pr16496a.map} | 0 ld/testsuite/ld-elf/pr16496b.c | 5 + ld/testsuite/ld-elf/pr16496b.od | 3 + ld/testsuite/ld-elf/shared.exp | 9 + ld/testsuite/ld-elfvers/vers24.rd | 2 +- 15 files changed, 374 insertions(+), 206 deletions(-) create mode 100644 ld/testsuite/ld-elf/pr16496a.c copy ld/testsuite/{ld-ifunc/pr16467a.map => ld-elf/pr16496a.map} (100%) create mode 100644 ld/testsuite/ld-elf/pr16496b.c create mode 100644 ld/testsuite/ld-elf/pr16496b.od
Fixed for 2.26.
Fixed.