From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alan Modra To: Martin Schwidefsky Cc: Nick Clifton , Jakub Jelinek , binutils@sources.redhat.com, laroche@redhat.com Subject: Re: s390 gas bug Date: Tue, 02 Oct 2001 07:34:00 -0000 Message-id: <20011003000441.O1019@bubble.sa.bigpond.net.au> References: X-SW-Source: 2001-10/msg00018.html 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