tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: What GNU triplet should be for mipsn64 (Re: mips64eb seems to be mostly 32-bit)
On Mon, 5 Jul 2021, Warner Losh wrote:
> > However, I'm not sure what GNU triplets should be for mipsn64e[bl].
> >
> > In the attached patch, I used mips64- and mips64el-unknown-netbsd for
> > mipsn64eb and el, respectively. However, these are indistinguishable
> > with conventional mips64e[bl] ones.
> >
> > IMO, mips64e[bl] should not really advertise themselves as mips64,
> > since their userlands are n32. But it is too late to correct...
> >
> > Ideas?
> >
>
> Years ago we went through this in FreeBSD. We settled on the unappealing,
> but mostly compatible, mips64 (for big endian) and mips64el (for little
> endian).
> Almost no upstreams at the time supported mips64eb, since SGI had used
> mips64 to mean big-endian 64-bit mips. We changed our build system to
> insert a few ugly special cases for mips64 where before we had nice regular
> expressions because that was way less painful than fixing the different
> upstreams
> at the time. Granted, this was around 2010, so your mileage may vary.
Umm, n64 has been supported with GCC since ~2000. For many years you
have also been able to configure it with the default ABI of choice by
using the `--with-abi=<abi>' option (you can choose the default ISA level
and several other defaults like this too). That only affects the default
setting, perhaps saving you some typing or setting the compiler invocation
somewhere, and the remaining ABIs, etc. continue being supported with the
respective compiler options.
As to the machine triplets, it has been settled decades ago that these
are `mips*el-*-*-abio32', `mips64*el-*-*-abin32', `mips64*el-*-*-abin64'
and `mips*-*-*-abio32', `mips64*-*-*-abin32', `mips64*-*-*-abin64' for the
respective little-endian and big-endian ABIs, although I am not sure how
extensively the suffixes have been used. The usual practice nowadays has
been to use plain `mips*el-*-*' and `mips*-*-*' for a 32-bit compiler with
o32 multilibs only, and `mips64*el-*-*' and `mips64*-*-*' for a 32/64-bit
compiler with a full set of o32/n64/n32 multilibs, and then to choose the
required defaults with configuration options as noted above.
Note that depending on the specific target chosen multilibs configured
with these triplets may include further ABI variants, such as hard-float
vs soft-float, legacy NaN vs 2008 NaN, MIPS16, microMIPS, etc.
Maciej
Home |
Main Index |
Thread Index |
Old Index