[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Processed: Re: Bug#624354: ./xpcshell: error while loading shared libraries: ./libxul.so: R_PPC_REL24 relocation at 0x0f9f0148 for symbol `_restgpr_29_x' out of range



On Thu, Apr 28, 2011 at 12:16:46PM +0200, Mike Hommey wrote:
> reassign 624354 gcc-4.5
> thanks
> 
> On Thu, Apr 28, 2011 at 12:14:41PM +0200, Mike Hommey wrote:
> > On Thu, Apr 28, 2011 at 12:10:54PM +0200, Mike Hommey wrote:
> > > On Thu, Apr 28, 2011 at 12:04:42PM +0200, Mike Hommey wrote:
> > > > Let me write it again:
> > > > - The R_PPC_REL24 relocations are all over libxul.so on objects that are
> > > > built -fPIC.
> > > > - libcrmf.a is also linked into libxul.so, and it also contains
> > > >   R_PPC_REL24 relocations, but all the objects it contains are built
> > > >   -fPIC.
> > > 
> > > And this is a -Os bug, apparently. Building with -O2 doesn't seem to
> > > yield these relocations.
> > 
> > I'm attaching a preprocessed source that yields the problem.
> > 
> > $ gcc -o encutil.o -Os -fPIC -c encutil.i
> > $ readelf -r encutil.o
> > 
> > Relocation section '.rela.text' at offset 0x478 contains 4 entries:
> >  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> > 0000004e  000005fc R_PPC_REL16_HA    00000000   .got2 + 8012
> > 00000052  000005fa R_PPC_REL16_LO    00000000   .got2 + 8016
> > 0000006c  00000b12 R_PPC_PLTREL24    00000000   SEC_ASN1Encode_Util + 8000
> > 0000007c  00000c0a R_PPC_REL24       00000000   _restgpr_30_x + 0
> > 
> > Relocation section '.rela.got2' at offset 0x4a8 contains 1 entries:
> >  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> > 00000000  00000901 R_PPC_ADDR32      00000000   crmf_encoder_out + 0
> > 
> > $ gcc -o encutil.o -O2 -fPIC -c encutil.i
> > $ readelf -r encutil.o
> > 
> > Relocation section '.rela.text' at offset 0x480 contains 3 entries:
> >  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> > 0000005a  000005fc R_PPC_REL16_HA    00000000   .got2 + 8022
> > 0000005e  000005fa R_PPC_REL16_LO    00000000   .got2 + 8026
> > 00000078  00000b12 R_PPC_PLTREL24    00000000   SEC_ASN1Encode_Util + 8000
> > 
> > Relocation section '.rela.got2' at offset 0x4a4 contains 1 entries:
> >  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> > 00000000  00000901 R_PPC_ADDR32      00000000   crmf_encoder_out + 0
> > 
> 
> And with gcc-4.4:
> $ gcc-4.4 -o encutil.o -Os -fPIC -c encutil.i
> $ readelf -r encutil.o
> 
> Relocation section '.rela.text' at offset 0x474 contains 3 entries:
>  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> 0000005a  000005fc R_PPC_REL16_HA    00000000   .got2 + 8022
> 0000005e  000005fa R_PPC_REL16_LO    00000000   .got2 + 8026
> 00000078  00000b12 R_PPC_PLTREL24    00000000   SEC_ASN1Encode_Util + 8000
> 
> Relocation section '.rela.got2' at offset 0x498 contains 1 entries:
>  Offset     Info    Type            Sym.Value  Sym. Name + Addend
> 00000000  00000901 R_PPC_ADDR32      00000000   crmf_encoder_out + 0

And a smaller testcase exhibiting the problem:

extern int bar();
int foo() {
  return bar();
}


Reply to: