This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] (version 2) Change MIPS linker stubs to allow for more than 2^15 symbols.
- From: Thiemo Seufer <ths at networkno dot de>
- To: David Daney <ddaney at avtrex dot com>
- Cc: binutils at sourceware dot org, Richard Sandiford <richard at codesourcery dot com>, Daniel Jacobowitz <drow at false dot org>
- Date: Fri, 9 Jun 2006 00:02:48 +0100
- Subject: Re: [PATCH] (version 2) Change MIPS linker stubs to allow for more than 2^15 symbols.
- References: <4488A29D.5040100@avtrex.com>
David Daney wrote:
[snip]
> Tested mipsel-linux cross build running on i686-pc-linux-gnu with make
> -k check showing no regressions. Also tested that java executables from
> GCC-4.2 now are able to run. Small objects still have the original 16
> byte stub, libgcj.so.7.0.0 uses the 20 byte stub.
I'm not going to demand it, but a testcase would be a good thing.
> Perhaps others could test on mips64 and/or big-endian systems.
>
> OK to commit?
>
> I know it is a bit late in the game, but how about for 2.17? It would
> be nice to say that gcc-4.2 can be used with an official binutils release.
Would be great, but that's Daniel's call. :-)
[snip]
> --- 8020,8061 ----
> MIPS_ELF_STUB_SECTION_NAME (dynobj));
> BFD_ASSERT (s != NULL);
>
> ! BFD_ASSERT ((MIPS_FUNCTION_STUB_SIZE (info) == 20)
> ! || (h->dynindx <= 65536));
> !
> ! /* Values up to 2^31 - 1 are allowed. Larger values would cause
> ! * sign extension at runtime in the stub, resulting in a negative
> ! * index value.
> ! */
> ! if (h->dynindx & 0x80000000)
> return FALSE;
>
> /* Fill the stub. */
> ! idx = 0;
> ! bfd_put_32 (output_bfd, STUB_LW (output_bfd), stub + idx);
> ! idx += 4;
> ! bfd_put_32 (output_bfd, STUB_MOVE (output_bfd), stub + idx);
> ! idx += 4;
> ! if (MIPS_FUNCTION_STUB_SIZE (info) == 20)
> ! {
> ! bfd_put_32 (output_bfd, STUB_LUI ((h->dynindx >> 16 ) & 0xffff),
Formatting. Otherwise ok for trunk.
Thiemo