This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Change MIPS linker stubs to allow for more than 2^15 symbols.


David Daney wrote:
> Thiemo Seufer wrote:
> >David Daney wrote:
> >
> >>As noted in this thread:
> >>
> >>http://sourceware.org/ml/binutils/2006-06/msg00086.html
> >>
> >>The mips linker would not reliably allow for more than 2^15 dynamic 
> >>symbols.  This prevents GCC's libgcj java runtime library from being 
> >>correctly linked.
> >>
> >>The consensus was to increase the size of the linker stubs by one 
> >>instruction so that objects with many dynamic symbols could be supported.
> >>
> >>I increased the size of the stub from 16 to 20 bytes.
> >
> >
> >It may be useful to use 24 bytes, this adheres to the ABI alignment
> >rule of 2^3.
> 
> Which rule would that be?  Is there such a requirement for function 
> entry points?

Apparently I misremembered and there is no such rule.

> >>The new stubs 
> >>support up to 2^31 dynamic symbols. That should be enough for at least 
> >>the short term.  With the patch applied I can now successfully build and 
> >>run libgcj from a recent GCC-4.2 snapshot on mipsel-linux.
> >
> >
> >Hm, 2^32 symbols would nicely fit the maximum for NewABI.
> 
> I don't know mips64 well enough to know how to load an unsigned 32 bit 
> constant.  So It had to be 2^31.

It would need one more instruction, so it is relatively expensive.


> >[snip]
> >
> >>*** 8013,8027 ****
> >> 				   MIPS_ELF_STUB_SECTION_NAME (dynobj));
> >>       BFD_ASSERT (s != NULL);
> >> 
> >>-       /* FIXME: Can h->dynindx be more than 64K?  */
> >>-       if (h->dynindx & 0xffff0000)
> >>- 	return FALSE;
> >>- 
> >
> >
> >When it is 2^31, shoudn't we continue to test for overflow?
> >
> Probably, but I got lazy.

Please add it back. :-)


Thiemo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]