diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 07327fa2273..8220bca249f 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -73,7 +73,7 @@ in { darwin = filterDoubles predicates.isDarwin; freebsd = filterDoubles predicates.isFreeBSD; # Should be better, but MinGW is unclear. - gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.elfv1; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.elfv2; }); + gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; }); illumos = filterDoubles predicates.isSunOS; linux = filterDoubles predicates.isLinux; netbsd = filterDoubles predicates.isNetBSD; diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 389c4eebcc8..838b648e582 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -21,14 +21,10 @@ rec { config = "powerpc64le-unknown-linux-musl"; }; - ppc64-elfv1 = { - config = "powerpc64-unknown-linux-elfv1"; + ppc64 = { + config = "powerpc64-unknown-linux-gnu"; + gcc = { abi = "elfv2"; }; # for gcc configuration }; - ppc64-elfv2 = { - config = "powerpc64-unknown-linux-elfv2"; - }; - ppc64 = ppc64-elfv2; # default to modern elfv2 - ppc64-musl = { config = "powerpc64-unknown-linux-musl"; gcc = { abi = "elfv2"; }; # for gcc configuration diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 8e012622ccd..a06ac0d11f7 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -337,18 +337,10 @@ rec { The "gnu" ABI is ambiguous on 32-bit ARM. Use "gnueabi" or "gnueabihf" instead. ''; } - { assertion = platform: platform.system != "powerpc64-linux"; - message = '' - The "gnu" ABI is ambiguous on big-endian 64-bit PPC. Use "elfv1" or "elfv2" instead. - ''; - } ]; }; gnuabi64 = { abi = "64"; }; - elfv1 = { abi = "elfv1"; }; - elfv2 = { abi = "elfv2"; }; - musleabi = { float = "soft"; }; musleabihf = { float = "hard"; }; musl = {}; @@ -452,7 +444,6 @@ rec { if lib.versionAtLeast (parsed.cpu.version or "0") "6" then abis.gnueabihf else abis.gnueabi - else if cpu == "powerpc64" then abis.elfv2 else abis.gnu else abis.unknown; }; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index 869405a2760..e4db92b7717 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -19,8 +19,7 @@ in with pkgs; rec { tarMinimal = gnutar.override { acl = null; }; busyboxMinimal = busybox.override { - useMusl = with stdenv.targetPlatform; !isRiscV && - (system == "powerpc64-linux" -> parsed.abi.name != "elfv1"); + useMusl = !stdenv.targetPlatform.isRiscV; enableStatic = true; enableMinimal = true; extraConfig = '' diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 8fc460ca522..77f3cc677f6 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -227,6 +227,8 @@ let }.${stdenv.hostPlatform.parsed.abi.name} or lib.systems.parse.abis.musl; }; + } // lib.optionalAttrs (stdenv.hostPlatform.system == "powerpc64-linux") { + gcc.abi = "elfv2"; }; }); };