about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2022-04-27 23:40:29 -0700
committerAdam Joseph <adam@westernsemico.com>2022-04-27 23:49:09 -0700
commiteabc6d2902f792064890a8fd48c6078e68248da4 (patch)
treea1de3383e6357b664907514869e6acabaa273012 /lib
parent5c737e23c62f888b6ae8629a314abc94c1d4ad8b (diff)
downloadnixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar.gz
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar.bz2
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar.lz
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar.xz
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.tar.zst
nixlib-eabc6d2902f792064890a8fd48c6078e68248da4.zip
lib/systems/platforms.nix: fix broken mips32 detection
Prior to this commit, nixpkgs would assume that every little-endian
mips32 system was a "fuloong2f_n32".

Not only are there plenty of mips32 chips other than the fuloong, but
the fuloong is actually a mips64 chip!  Note that the "n32" ABI is
(confusingly) an ABI for 64-bit mips chips (like the "x32" ABI for
amd64 chips -- both are ABIs which use 32-bit pointers on an
otherwise-64-bit system).

This error causes far-ranging problems.  One of them was particularly
difficult to track down: it caused GCC to select 128-bit `long double`
types, which is invalid for the mips32 ABI.  This isn't noticed until
you try to build musl-libc, which is careful to check for these things.

Prior to this commit,

  nix-build . -A pkgsCross.mipsel-linux-gnu.pkgsStatic.hello

would fail.  With this commit and #170736, it succeeds.
Diffstat (limited to 'lib')
-rw-r--r--lib/systems/platforms.nix2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix
index d65ff6487b7a..5290b67cde8a 100644
--- a/lib/systems/platforms.nix
+++ b/lib/systems/platforms.nix
@@ -564,7 +564,7 @@ rec {
 
     else if platform.isRiscV then riscv-multiplatform
 
-    else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then fuloong2f_n32
+    else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then (import ./examples.nix { lib = lib; }).mipsel-linux-gnu
 
     else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv