Re: c++ problems - konqueror, etc.
Jan-Hendrik Palic wrote:
> Hi Guido :)
> On Wed, Oct 23, 2002 at 07:34:16PM +0200, Guido Guenther wrote:
> >On Wed, Oct 23, 2002 at 06:59:07PM +0200, Jan-Hendrik Palic wrote:
> >> What about big C++ progs like Mozilla, are they running with gcc-3.2.x
> >> on MIPS?
> >Nope. This is a completely different issue (the global offset table
> >isn't big enough to hold all the relocation entries). We need multi got
> >support (or n32 ABI) to fix this.
AFAICS any of these will break binary compatibility.
> I had to ask this several time, I met you ;)
> Where can I find docs about this and especially this issue!
An o32 GOT table can have a maximum size of 64kB (16k entries)
because that's the maximum offset a load instruction accepts:
lw $reg, <offset>($gp)
loads the address of an data item from the GOT. GAS/GLD is currently
very wasteful with these precious GOT entries, any entry which _could_
be needed is allocated. There is no reference counting to drop unneeded
GOT entries lateron. This leads to GOT overflow for very large
executables or libraries.
The right way to solve it would be to implement GOT reference
counting in MIPS binutils. Hope that helps :-)