s390 gas bug
Alan Modra
amodra@bigpond.net.au
Tue Oct 2 07:34:00 GMT 2001
On Tue, Oct 02, 2001 at 03:55:43PM +0200, Martin Schwidefsky wrote:
>
> > > it doesn't create an R_390_PLT32 relocation and instead hardcodes
> > > address of f1 above it. For static int f1 (void) { return 1; } this
> > > would be right, but as f1 is global symbol, it should be possible to
> > > override f1 at runtime
> >
> > Well, for certain file formats, yes.
> >
> > It sounds like the s390 gas port needs to define TC_FORCE_RELOCATION
> > and then have it return true for BFD_RELOC_S390_PLT32 relocs, and
> > probably some others as well.
>
> Isn't that what tc_fix_adjustable is supposed to catch ?
>
Well, no, not for this particular case. You need to define
TC_FORCE_RELOCATION to cover this situation because to the generic
code in write.c:fixup_segment, your "f1@PLT-.LT1_0" expression
looks like the subtraction of two syms in one segment. The normal
action is to perform the subtraction and not emit a reloc.
Alan
More information about the Binutils
mailing list