Re: What GNU triplet should be for mipsn64 (Re: mips64eb seems to be mostly 32-bit)
"Maciej W. Rozycki" <[email protected]>
| Newsgroups | gmane.os.netbsd.ports.mips.devel,gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
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