mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
e1c6cf618c
Function symbols of course don't normally want .dynbss copies but with some old versions of gcc they are needed to copy the function descriptor. This patch restricts the cases where they are useful to compilers using dot-symbols, and enables the warning regardless of whether a PLT entry is emitted in the executable. PLTs in shared libraries are affected by a .dynbss copy in the executable. bfd/ PR 25384 * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Update comment. (ppc64_elf_adjust_dynamic_symbol): Don't allow .dynbss copies of function symbols unless dot symbols are present. Do warn whenever one is created, regardles of whether a PLT entry is also emitted for the function symbol. ld/ * testsuite/ld-powerpc/ambiguousv1b.d: Adjust expected output. * testsuite/ld-powerpc/funref.s: Align func_tab. * testsuite/ld-powerpc/funref2.s: Likewise. * testsuite/ld-powerpc/funv1.s: Add dot symbols.
25 lines
709 B
Makefile
25 lines
709 B
Makefile
#source: startv1.s
|
|
#source: funref2.s
|
|
#as: -a64
|
|
#ld: -melf64ppc --emit-stub-syms
|
|
#ld_after_inputfiles: tmpdir/funv1.so
|
|
#warning: .*requires lazy plt linking.*
|
|
#readelf: -rs --wide
|
|
# Check that we do the right thing with funref2.s that doesn't have
|
|
# anything to mark it as ELFv1 or ELFv2. Since my_func address is
|
|
# taken in a read-only section we should get a copy reloc for the OPD
|
|
# entry.
|
|
|
|
Relocation section .* contains 1 entry:
|
|
.*
|
|
.* R_PPC64_COPY .* my_func \+ 0
|
|
|
|
Symbol table '\.dynsym' contains 2 entries:
|
|
#...
|
|
.*: 0*[1-9a-f][0-9a-f]* +24 FUNC +GLOBAL DEFAULT +1[23] my_func
|
|
#...
|
|
Symbol table '\.symtab' contains .* entries:
|
|
#...
|
|
.*: 0*[1-9a-f][0-9a-f]* +24 FUNC +GLOBAL DEFAULT +1[23] my_func
|
|
#pass
|