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: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.
That's because the out-of-line prologue/epilogue register save and
restore functions are only used at -Os (they save size).
Now I believe, but don't quote me on that, that the linker
should insert a copy of these functions in every shared library
since these functions have non standard linkage and probably
would not survive crossing shared library boundaries.
I can see a bug if the shared library text size is above
32M or so (needs several copies of these functions), but
I don't think the libraries are that big.
But I may be completely wrong on the last 2 paragraphs.