From: Gregory P. Smith Date: Tue, 5 Jun 2012 20:26:39 +0000 (-0700) Subject: Fixes issue #15000: support the odd x32 abi on posixsubprocess's system call. X-Git-Tag: v3.3.0b1~267^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58f07a9d6d2aa7b5d624ef23cc89c99071fa249f;p=python Fixes issue #15000: support the odd x32 abi on posixsubprocess's system call. --- diff --git a/Misc/NEWS b/Misc/NEWS index 1fd7901c1d..2890ebee4f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -275,6 +275,8 @@ Library Extension Modules ----------------- +- Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c. + - Issue #9041: An issue in ctypes.c_longdouble, ctypes.c_double, and ctypes.c_float that caused an incorrect exception to be returned in the case of overflow has been fixed. diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index 81274e12c8..21ad966378 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -175,8 +175,15 @@ _close_fds_by_brute_force(int start_fd, int end_fd, PyObject *py_fds_to_keep) * 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) */ };