about summary refs log tree commit diff
path: root/lib/systems
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2022-07-25 12:20:58 +0200
committerRick van Schijndel <Mindavi@users.noreply.github.com>2022-08-28 21:46:44 +0200
commitda2d9a2aca33d628e20b8a8693fb995192d31903 (patch)
treed3c06429fa581d17fcd3dbc13729e56650f17ba4 /lib/systems
parent444208798aefb1787b8ef0851f5c3d49113bd014 (diff)
lib/systems: add elfv1 / elfv2 ABIs
Diffstat (limited to 'lib/systems')
-rw-r--r--lib/systems/inspect.nix2
-rw-r--r--lib/systems/parse.nix8
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index 54d398018e0b1..833966e57a6b1 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -65,7 +65,7 @@ rec {
     isNone         = { kernel = kernels.none; };
 
     isAndroid      = [ { abi = abis.android; } { abi = abis.androideabi; } ];
-    isGnu          = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf ];
+    isGnu          = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf gnuabielfv1 gnuabielfv2 ];
     isMusl         = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf muslabin32 muslabi64 ];
     isUClibc       = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
 
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index be5b1a0892bba..b780292854457 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -353,6 +353,11 @@ rec {
             The "gnu" ABI is ambiguous on 32-bit ARM. Use "gnueabi" or "gnueabihf" instead.
           '';
         }
+        { assertion = platform: with platform; !(isPower64 && isBigEndian);
+          message = ''
+            The "gnu" ABI is ambiguous on big-endian 64-bit PowerPC. Use "gnuabielfv2" or "gnuabielfv1" instead.
+          '';
+        }
       ];
     };
     gnuabi64     = { abi = "64"; };
@@ -364,6 +369,9 @@ rec {
     gnuabin32    = { abi = "n32"; };
     muslabin32   = { abi = "n32"; };
 
+    gnuabielfv2  = { abi = "elfv2"; };
+    gnuabielfv1  = { abi = "elfv1"; };
+
     musleabi     = { float = "soft"; };
     musleabihf   = { float = "hard"; };
     musl         = {};