This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On Mon, Jul 23, 2018 at 07:38:44AM -0700, Douglas B Rupp wrote:
> 
> 
> 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)

But for undefined syms and relocatable linking, toff is the symbol
index.  Or at least it is supposed to be.  I do see a bug where the
reloc addend could be added to toff, but that is unlikely to trigger.

> 
> The attached patch fixes it.

I don't see how adding "abfd" to the branch fixup struct can possibly
help.  "abfd" is a constant for any one invocation of
ppc_elf_relax_section!

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]