Fixes issue #15000: support the odd x32 abi on posixsubprocess's system call.
diff --git a/Misc/NEWS b/Misc/NEWS
index 332e408..adbb810 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -55,6 +55,11 @@
 - Issue #14963: Convert contextlib.ExitStack.__exit__ to use an iterative
   algorithm (Patch by Alon Horev)
 
+Extension Modules
+-----------------
+
+- Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c.
+
 Tests
 -----
 
diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c
index 8d3af6e..4a14788 100644
--- a/Modules/_posixsubprocess.c
+++ b/Modules/_posixsubprocess.c
@@ -177,8 +177,15 @@
  * chooses to break compatibility with all existing binaries.  Highly Unlikely.
  */
 struct linux_dirent {
+#if defined(__x86_64__) && defined(__ILP32__)
+   /* Support the wacky x32 ABI (fake 32-bit userspace speaking to x86_64
+    * kernel interfaces) - https://sites.google.com/site/x32abi/ */
+   unsigned long long d_ino;
+   unsigned long long d_off;
+#else
    unsigned long  d_ino;        /* Inode number */
    unsigned long  d_off;        /* Offset to next linux_dirent */
+#endif
    unsigned short d_reclen;     /* Length of this linux_dirent */
    char           d_name[256];  /* Filename (null-terminated) */
 };