glibc: fix inconsistency of mips ABI mapping

Before this commit, glibc headers did the following mapping:

 * (zig) mipsel-linux-gnu      => (glibc) mipsel-linux-gnu
 * (zig) mipsel-linux-gnu-soft => (glibc) (none)
 * (zig) mips-linux-gnu        => (glibc) mips-linux-gnu
 * (zig) mips-linux-gnu-soft   => (glibc) (none)

While the glibc ABI stubs used the (zig) gnueabi and gnueabihf ABIs,
and the stage2 available_libcs array listed:

 * (zig) mipsel-linux-gnu
 * (zig) mips-linux-gnu

The problem is the mismatch between the ABI component of the headers and
the stubs.

This commit makes the following clarifications:

 * (zig) mips-linux-gnueabi     means soft-float
 * (zig) mipsel-linux-gnueabi   means soft-float
 * (zig) mips-linux-gnueabihf   means hard-float
 * (zig) mipsel-linux-gnueabihf means hard-float

Consequently, the glibc headers now do this mapping:

 * (zig) mips-linux-gnueabihf   => (glibc) mips-linux-gnu
 * (zig) mipsel-linux-gnueabihf => (glibc) mipsel-linux-gnu
 * (zig) mips-linux-gnueabi     => (glibc) mips-linux-gnu-soft
 * (zig) mipsel-linux-gnueabi   => (glibc) mipsel-linux-gnu-soft

The glibc ABI stubs are unchanged, and the stage2 available_libcs
array's 2 entries are modified and it gains 2 more:

 * (zig) mipsel-linux-gnueabi
 * (zig) mipsel-linux-gnueabihf
 * (zig) mips-linux-gnueabi
 * (zig) mips-linux-gnueabihf

Now everything is consistent. Zig no longer recognizes a `mips-linux-gnu`
triple; one must use `mips-linux-gnueabi` (soft float) or
`mips-linux-gnueabihf` (hard float).
This commit is contained in:
Andrew Kelley
2021-12-15 18:59:59 -07:00
parent e977455f7c
commit 5b6d26e97b
167 changed files with 4793 additions and 992 deletions
+12 -2
View File
@@ -122,12 +122,22 @@ const glibc_targets = [_]LibCTarget{
LibCTarget{
.name = "mipsel-linux-gnu",
.arch = MultiArch{ .specific = Arch.mipsel },
.abi = MultiAbi{ .specific = Abi.gnu },
.abi = MultiAbi{ .specific = Abi.gnueabihf },
},
LibCTarget{
.name = "mipsel-linux-gnu-soft",
.arch = MultiArch{ .specific = Arch.mipsel },
.abi = MultiAbi{ .specific = Abi.gnueabi },
},
LibCTarget{
.name = "mips-linux-gnu",
.arch = MultiArch{ .specific = Arch.mips },
.abi = MultiAbi{ .specific = Abi.gnu },
.abi = MultiAbi{ .specific = Abi.gnueabihf },
},
LibCTarget{
.name = "mips-linux-gnu-soft",
.arch = MultiArch{ .specific = Arch.mips },
.abi = MultiAbi{ .specific = Abi.gnueabi },
},
LibCTarget{
.name = "powerpc64le-linux-gnu",