Commit graph

2 commits

Author SHA1 Message Date
Alan Modra
1d5c94cb3e ppc476 linker workaround shared lib fixes again
Huh, I can't even write a binary search properly.

bfd/
	* elf32-ppc.c (ppc_elf_relocate_section): Correct binary search of
	dynamic relocs.
ld/testsuite/
	* ld-powerpc/ppc476-shared.s: Repeat dynamic reloc generating insns.
	* ld-powerpc/ppc476-shared.d: Update.
	* ld-powerpc/ppc476-shared2.d: Update.
2015-06-16 17:42:29 +09:30
Alan Modra
f8b447819b ppc476 linker workaround shared lib fixes
When building a shared lib from non-PIC objects, we'll get dynamic
text relocations.  These need to move with any insns we move.
Otherwise the dynamic reloc will modify the branch, resulting in
crashes and other unpleasant behaviour.

Also, ld -r --ppc476-workaround used with sufficiently aligned PIC
objects needs a fix for emitted REL16 relocs.

bfd/
	* elf64-ppc.c (ppc_elf_relocate_section): Move dynamic text
	relocs with insns moved by --ppc476-workaround.  Correct
	output of REL16 relocs.
ld/testsuite/
	* ld-powerpc/ppc476-shared.s,
	* ld-powerpc/ppc476-shared.lnk,
	* ld-powerpc/ppc476-shared.d,
	* ld-powerpc/ppc476-shared2.d: New tests.
	* ld-powerpc/powerpc.exp: Run them.
2015-06-05 20:12:11 +09:30