elf: Check symbol version without any symbols

VER_FLG_WEAK doesn't indicate that all symbol references of the symbol
version have STB_WEAK.  VER_FLG_WEAK indicates a weak symbol version
definition with no symbols associated with it.  It is used to verify
the existence of a particular implementation without any symbol references
to the weak symbol version.

	PR ld/24718
	* testsuite/ld-elf/pr24718-1.d: New file.
	* testsuite/ld-elf/pr24718-1.s: Likewise.
	* testsuite/ld-elf/pr24718-1.t: Likewise.
This commit is contained in:
H.J. Lu
2022-01-24 08:20:13 -08:00
parent e1dbfc17c5
commit 4bed253f22
3 changed files with 24 additions and 0 deletions

View File

@ -0,0 +1,13 @@
#ld: -shared -version-script pr24718-1.t
#readelf: -V
#target: [check_shared_lib_support]
#xfail: hppa64-*-* tic6x-*-*
# hppa64 uses dot-symbols, tic6x requires a non-default emulation.
#...
Version definition section '\.gnu\.version_d' contains 3 entries:
+Addr: 0x[0-9a-f]+ +Offset: 0x[0-9a-f]+ +Link: [0-9]+ \(\.dynstr\)
+000000: Rev: 1 +Flags: BASE +Index: 1 +Cnt: 1 +Name: dump
+0x001c: Rev: 1 +Flags: WEAK +Index: 2 +Cnt: 1 +Name: FOO_DEP
+0x0038: Rev: 1 +Flags: none +Index: 3 +Cnt: 1 +Name: FOO
#pass

View File

@ -0,0 +1,7 @@
.text
.globl foo
.globl foo
.type foo,%function
foo:
.byte 0
.size foo, 1

View File

@ -0,0 +1,4 @@
FOO_DEP { };
FOO {
foo;
};