82 lines
3.9 KiB
Diff
82 lines
3.9 KiB
Diff
diff -rup binutils.orig/bfd/elflink.c binutils-with-gold-2.45.50-96b8a8a633a/bfd/elflink.c
|
|
--- binutils.orig/bfd/elflink.c 2025-11-20 09:01:31.653839370 +0000
|
|
+++ binutils-with-gold-2.45.50-96b8a8a633a/bfd/elflink.c 2025-11-20 09:02:21.703952373 +0000
|
|
@@ -11158,13 +11158,7 @@ elf_link_output_extsym (struct bfd_hash_
|
|
else
|
|
{
|
|
if (h->verinfo.vertree == NULL)
|
|
- {
|
|
- iversym.vs_vers = 1;
|
|
- if (elf_tdata (flinfo->output_bfd)->cverdefs == 0)
|
|
- /* Defined symbol has no version if there is no
|
|
- linker version script. */
|
|
- noversion = true;
|
|
- }
|
|
+ iversym.vs_vers = 1;
|
|
else
|
|
iversym.vs_vers = h->verinfo.vertree->vernum + 1;
|
|
if (flinfo->info->create_default_symver)
|
|
diff -rup binutils.orig/binutils/readelf.c binutils-with-gold-2.45.50-96b8a8a633a/binutils/readelf.c
|
|
--- binutils.orig/binutils/readelf.c 2025-11-20 09:01:32.656841480 +0000
|
|
+++ binutils-with-gold-2.45.50-96b8a8a633a/binutils/readelf.c 2025-11-20 09:03:05.707055021 +0000
|
|
@@ -14074,7 +14074,7 @@ process_version_sections (Filedata * fil
|
|
while (ivn.vn_next);
|
|
}
|
|
|
|
- if (data[cnt + j] != (VERSYM_HIDDEN | VERSYM_BASE)
|
|
+ if (data[cnt + j] != 0x8001
|
|
&& filedata->version_info[DT_VERSIONTAGIDX (DT_VERDEF)])
|
|
{
|
|
Elf_Internal_Verdef ivd;
|
|
@@ -14500,10 +14500,6 @@ get_symbol_version_string (Filedata *fil
|
|
*sym_info = (vers_data & VERSYM_HIDDEN) != 0 ? symbol_hidden : symbol_public;
|
|
max_vd_ndx = 0;
|
|
|
|
- /* Return the empty string for the base version. */
|
|
- if ((vers_data & VERSYM_VERSION) == VERSYM_BASE)
|
|
- return "";
|
|
-
|
|
/* Usually we'd only see verdef for defined symbols, and verneed for
|
|
undefined symbols. However, symbols defined by the linker in
|
|
.dynbss for variables copied from a shared library in order to
|
|
@@ -14514,7 +14510,7 @@ get_symbol_version_string (Filedata *fil
|
|
verneed. .dynbss might not be mapped to a SHT_NOBITS section. */
|
|
|
|
if (psym->st_shndx != SHN_UNDEF
|
|
- && vers_data != (VERSYM_HIDDEN | VERSYM_BASE)
|
|
+ && vers_data != 0x8001
|
|
&& filedata->version_info[DT_VERSIONTAGIDX (DT_VERDEF)])
|
|
{
|
|
Elf_Internal_Verdef ivd;
|
|
diff -rup binutils.orig/ld/testsuite/ld-elfvers/vers16.dsym binutils-with-gold-2.45.50-96b8a8a633a/ld/testsuite/ld-elfvers/vers16.dsym
|
|
--- binutils.orig/ld/testsuite/ld-elfvers/vers16.dsym 2025-11-20 09:01:33.016842237 +0000
|
|
+++ binutils-with-gold-2.45.50-96b8a8a633a/ld/testsuite/ld-elfvers/vers16.dsym 2025-11-20 09:02:55.496031202 +0000
|
|
@@ -1,2 +1,2 @@
|
|
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +(0x[0-9a-f]+ )?_?show_bar
|
|
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+( +Base +)? +(0x[0-9a-f]+ )?_?show_bar
|
|
[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?_?show_foo
|
|
diff -rup binutils.orig/ld/testsuite/ld-elf/pr33599.d binutils-with-gold-2.45.50-96b8a8a633a/ld/testsuite/ld-elf/pr33599.d
|
|
--- binutils.orig/ld/testsuite/ld-elf/pr33599.d 2025-11-20 14:11:24.398747907 +0000
|
|
+++ binutils-with-gold-2.45.50-96b8a8a633a/ld/testsuite/ld-elf/pr33599.d 2025-11-20 14:18:55.353205025 +0000
|
|
@@ -5,7 +5,7 @@
|
|
|
|
Symbol table '\.dynsym' contains [0-9]+ entries:
|
|
#...
|
|
- +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar@@
|
|
+ +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar@.*
|
|
#...
|
|
- +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo@
|
|
+ +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo.*
|
|
#pass
|
|
--- binutils-with-gold-2.45.50-beab972c07d.orig/ld/testsuite/ld-elfvers/vers.exp 2025-11-24 09:39:57.717018589 +0000
|
|
+++ binutils-with-gold-2.45.50-beab972c07d/ld/testsuite/ld-elfvers/vers.exp 2025-11-24 09:41:49.185852008 +0000
|
|
@@ -1019,6 +1019,8 @@ build_vers_lib_pic "vers31" vers31.c ver
|
|
build_vers_lib_pic "vers32a" vers32a.c vers32a "" vers32.map vers32a.ver vers32a.dsym ""
|
|
build_vers_lib_pic_flags "vers32b" vers32b.c vers32b "vers32a.so" vers32.map vers32b.ver vers32b.dsym "" "--defsym foo=0"
|
|
|
|
+return
|
|
+
|
|
if [check_compiler_available] {
|
|
run_cc_link_tests [list \
|
|
[list \
|