[PATCH] Re: Don't relax undefined symbols on ppc.

Douglas B Rupp rupp@adacore.com
Mon Jul 23 17:27:00 GMT 2018



On 07/09/2018 06:27 PM, Alan Modra wrote:
> On Mon, Jul 09, 2018 at 01:58:33PM -0700, Douglas B Rupp wrote:
>> There is a problem with --relax in the partial link trying to relax the
>> undefined symbols, leading to the RTP failing at startup with signal 11.
> 
> Please describe the problem in detail.  ld -r --relax non-pic is
> supposed to work for ppc32, with a branch to an undefined symbol being
> resolved to a trampoline which has relocations to the symbol.  Are the
> emitted relocations wrong?
> 
>> I solicit comments on the attached patch, which causes undefined symbols to
>> be ignored during the relax process.  Leaving them to be relaxed and
>> resolved during the final link.
> 
> If ld -r mashes together sections such that the resulting output
> section size exceeds the reach of a branch, then it may not be
> possible to for branches to reach trampolines placed at the end of the
> section.  That's the problem ld -r --relax is trying to solve, by
> placing trampolines at the end of each input section.
> 

The problem is that "tsec" is the undefined section and basically a 
no-op in the following line, so existing trampolines are found when they 
shouldn't be found.

elf32-ppc.c: if (f->tsec == tsec && f->toff == toff)

The attached patch fixes it.
I don't have write privs.

--Doug
-------------- next part --------------
2018-07-23  Douglas B Rupp  <rupp@adacore.com>

	* elf32-ppc.c (ppc_elf_relax_section): For branch fixups compare
	with abfd to ensure uniqueness in the case of an undefined target
	section
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fixup.diff
Type: text/x-patch
Size: 1142 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20180723/e08798b7/attachment.bin>


More information about the Binutils mailing list