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] (version 2) Change MIPS linker stubs to allow for more than 2^15 symbols.


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


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