[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