This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
- To: binutils at sources dot redhat dot com
- Subject: Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
- From: Richard Sandiford <r dot sandiford at redhat dot com>
- Date: 03 Sep 2001 10:57:00 +0100
- References: <20010825032615.E309@rembrandt.csv.ica.uni-stuttgart.de> <wvnr8ts1ddl.fsf@talisman.cambridge.redhat.com> <20010831181657.A17249@rembrandt.csv.ica.uni-stuttgart.de> <200108311711.KAA19709@geoffk.org> <20010831193107.A10362@rembrandt.csv.ica.uni-stuttgart.de> <mailpost.999279120.2469@postal.sibyte.com> <yov51yls6sgi.fsf@highland.sibyte.com> <20010831204556.C17249@rembrandt.csv.ica.uni-stuttgart.de> <mailpost.999283589.5294@postal.sibyte.com> <yov5ofow585q.fsf@highland.sibyte.com> <20010901032235.A4969@rembrandt.csv.ica.uni-stuttgart.de>
Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> cgd@broadcom.com wrote:
> [snip]
> > yes, i know that the pointer is going to be constrainted to being a
> > sign-extended 32-bit value, but neither the compiler or any assembly
> > code that uses it needs to know that (or should). As far as they're
> > concerned, pointers are 64-bit values and they're loaded with ld, etc.
>
> I see. Btw, my patch actually doesn't change this behaviour, the
> HAVE_32BIT_ADDRESSES macro cares about macro expansion, so it
> changes an address load via immediates from a "lui; daddiu" sequence
> to "lui; addiu", this makes no difference. An "ld" isn't changed.
But HAVE_32BIT_ADDRESSES controls all the address calcuations done by
macros, not just those that are guaranteed to be 32-bit values. To take
one example, if "foo" is in .sdata, won't:
la $4,foo
use
addiu $4,$gp,foo
after your patch? Is $gp guaranteed to be a 32-bit value when 64-bit
pointers are being used?
Richard