mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
f5b9c288a3
Undefined weak symbols with non-default visibility are seen as local by SYMBOL_REFERENCES_LOCAL. This stops a got indirect to relative optimisation for them, so that pies and dlls don't get non-zero values when loading somewhere other than the address they are linked at (which always happens). The optimisation could be allowed for pdes, but I thought it best not to allow it there too. bfd/ * elf64-ppc.c (ppc64_elf_relocate_section): Don't optimise got indirect to pc-relative or toc-relative for undefined symbols. ld/ * testsuite/ld-powerpc/weak1.d, * testsuite/ld-powerpc/weak1.r, * testsuite/ld-powerpc/weak1.s, * testsuite/ld-powerpc/weak1so.d, * testsuite/ld-powerpc/weak1so.r: New tests. * testsuite/ld-powerpc/powerpc.exp: Run them.
8 lines
131 B
R
8 lines
131 B
R
#...
|
|
.* R_PPC64_GLOB_DAT +0+ x1 \+ 0
|
|
#...
|
|
.* 0+ +0 NOTYPE +WEAK +DEFAULT +UND x1
|
|
#...
|
|
.* 0+ +0 NOTYPE +WEAK +DEFAULT +UND x1
|
|
#pass
|