Maciej W. Rozycki wrote:
[snip]
> On Wed, 14 May 2003, Thiemo Seufer wrote:
>
> > > Why unfortunate? You use "32" and "64" for normal stuff, and the rest
> > > for special cases ("n32" isn't really 32-bit and "o64" isn't really 64-bit
> > > -- both lie in the middle).
> >
> > Exactly this is the sort of confusion which makes the naming unfortunate.
> > -32 and -64 had never much to do with 32/64 bit but designate ABIs.
>
> Well, "32" is 32-bit address/data and "64" is 64-bit address/data.
> That's essentially pure 32-bit and 64-bit, respectively. Of course some
> data format has to be emitted by tools, so there has to be an ABI
> associated with each of these variants.
That's just backwards. An ABI defines much more, e.g. calling
conventions and GOT sizes. The register size is just another
property of the ABI.
> And "n32" and "o64" are 32-bit address/64-bit data -- you can use 64-bit
> data, e.g. in gas, but you cannot use 64-bit addressing, e.g. a
> section/segment cannot be bigger than 4 GB.
>
> The naming isn't consistent, indeed -- there could be, say:
>
> - "32" for 32-bit support -- unambiguous, since there is only one
> variation,
This assumption fails if there will ever be an improved 32bit ABI with
e.g. NewABI calling conventions, as the MEABI tried some time ago.
> - "64" for 64-bit support -- requiring an additional option for selecting
> the ABI, bailing out without one (or defaulting to a preconfigured ABI).
Argh! Once again, the _ABI_ defines if it supports 64bit. For an
ABI-compliant system, there's no point in having a register-size
selection option.
> Alternatively, there could be no "32" option -- tools configured for
> "mips" would only emit 32-bit binaries
What is a "32-bit binary"? o32, EABI, MEABI or another
yet-to-be-invented one?
> and tools configured for "mips64"
> -- 64-bit and mixed ones, depending on one of the "64", "o64" and "n32"
> options.
What's desireable here depends on the target system. For Linux,
the current way is IMHO the best: o32 only for mips-linux, and
o32, n32 and n64 for mips64-linux, with n32 as default.
o64 isn't useful for Linux, and only interesting for backward
compatibility elsewhere.
Thiemo
|