[PATCH][MIPS] Add linker emulation for N64 ABI with forced 32-bit symbols

David Daney ddaney.cavm@gmail.com
Thu Nov 15 21:56:00 GMT 2012


On 11/15/2012 01:47 PM, Maxim Kuvyrkov wrote:
> This patch fixes linking of applications compiled with -mabi=64 -msym32.
>
> The -msym32 GCC options forces MIPS backend to emit 32-bit symbols even when compiling for 64-bit ABI, which is most useful for building applications with PLTs to call shared library functions (PLTs are currently supported only for 32-bit symbols for MIPS).  Certain applications get a significant performance edge from using PLTs, and such applications should be compiled with "-mabi=64 -mplt -msym32".
>
> Compiling with the above options works just fine until linker tries to put the .text section above 32-bit address space at TEXT_START_ADDR="0x120000000".  This patch sets TEXT_START_ADDR to 0x10000000 (which is same as for N32 ABI) when compiling with -msym32 GCC option.
>
> I will post the corresponding GCC patch that tells the linker to use new emulations shortly.
>
> Tested by building complete MIPS64 toolchain (including glibc) with -msym32.

I don't understand how this is possible.  The operating system will load 
shared libraries outside of the lower 2BG of virtual address space.  How 
coulde glibc possibly work when built like this and it is loaded at a 
'high' address (as is normally done in Linux systems)?

David Daney


>
> OK to apply?
>
> --
> Maxim Kuvyrkov
> CodeSourcery / Mentor Graphics
>
>



More information about the Binutils mailing list