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