Browse Source
Don't set version info on unversioned symbols when seeing a hidden versioned symbol after an unversioned definition and the default versioned symbol. bfd/ PR ld/28348 * elflink.c (elf_link_add_object_symbols): Don't set version info on unversioned symbols. ld/ PR ld/28348 * testsuite/ld-elf/pr28348.rd: New file. * testsuite/ld-elf/pr28348.t: Likewise. * testsuite/ld-elf/pr28348a.c: Likewise. * testsuite/ld-elf/pr28348b.c: Likewise. * testsuite/ld-elf/pr28348c.c: Likewise. * testsuite/ld-elf/shared.exp: Run PR ld/28348 tests.binutils-2_38-branch
7 changed files with 73 additions and 1 deletions
@ -0,0 +1,8 @@ |
|||
#ld: -shared |
|||
#readelf: --dyn-syms --wide |
|||
#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi |
|||
#xfail: ![check_shared_lib_support] |
|||
|
|||
#... |
|||
+[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +WEAK +DEFAULT (\[NOPV\]|) +[0-9]+ +_?foo |
|||
#pass |
|||
@ -0,0 +1,6 @@ |
|||
VERS_2.0 { |
|||
global: |
|||
foo; bar; |
|||
local: |
|||
*; |
|||
}; |
|||
@ -0,0 +1,5 @@ |
|||
__attribute__ ((weak)) |
|||
void |
|||
foo (void) |
|||
{ |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
void |
|||
foo (void) |
|||
{ |
|||
} |
|||
asm (".symver foo,foo@VERS_2.0"); |
|||
@ -0,0 +1,8 @@ |
|||
extern void foo (void); |
|||
|
|||
int |
|||
main () |
|||
{ |
|||
foo (); |
|||
return 0; |
|||
} |
|||
Loading…
Reference in new issue