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

Matt Thomas matt@3am-software.com
Sun Nov 18 01:02:00 GMT 2012

On Nov 17, 2012, at 11:53 AM, Andrew Pinski wrote:

> On Sat, Nov 17, 2012 at 11:31 AM, Matt Thomas <matt@3am-software.com> wrote:
>> On Nov 15, 2012, at 2:08 PM, Richard Sandiford wrote:
>>> Huh.  I'm very much against the original change to the n64 TEXT_START_ADDR.
>>> See this previous discussion on the topic:
>>>   http://sourceware.org/ml/binutils/2008-06/msg00285.html
>>> The justification for changing TEXT_START_ADDR from a 32-bit value to a
>>> larger value was that it would show users if their code was non-portable,
>>> because anything that assumed 32-bit addresses would now fault.  But that
>>> seems to me like the tools lecturing to the user.  As I said in that thread,
>>> I think users who want to smoke out such portability problems (by making
>>> sure that the lower 4GB aren't mapped) should be the ones who need to do
>>> something special.
>> Gee, should we go back and stop making sure VA 0 is unmapped too?  Sure it helps find NULL pointer dereferences but isn't that the tools lecturing to the user as well?  Having the TEXT_START_ADDR at 5GB doesn't hurt anyone and will errant catch 32-bit deferences instead of allowing possible silent corruption.  Why is that a bad thing?
> I think Richard's point is that the major targets which have both 32
> and 64bits are now using a load address which is a 32bits address.  So
> the issues on the major platforms have an issue already.

NetBSD only uses a 32-bit load address for N32/O32, N64 loads at 0x140000000.
(One of these days I'm going to move the stack to 0x13ffff0000 for N64).

>>> I think we should simply revert to a 32-bit TEXT_START_ADDR for all
>>> n64 emulations.  This time I'm even in a position to approve it :-)
>> I strongly disagree.  Just because you can approve it doesn't mean you are right.  If you do make the change, NetBSD will still use the 5GB start address.
> So you don't want the speed up from -msym32 for netbsd, that is fine
> with me.  Which MIPS64 processors are supported by netbsd again?

R4000/R4400, MIPS5K, XLR/XLS/XLP, and others.

NetBSD uses -mabicalls so that most symbols are gotten from the GOT so -msym32 doesn't help us that much.

More information about the Binutils mailing list