diff -r Python-2.7.11/Lib/ctypes/__init__.py python-2.7.11.5/Lib/ctypes/__init__.py 357a358,369 > if _sys.platform.startswith("aix"): > # adding RTLD_NOW is already 'forced' in Modules/_ctypes/callproc.c > # left here (as a comment) to remind it is required by AIX > # from _ctypes import RTLD_NOW - not until Python3.6 > # mode |= RTLD_NOW -- not documented, but added automatically by Modules/_ctypes/_ctypes.c > # When a string contains ".a(" and ends with ")", asin "libFOO.a(libFOO.so)" > # this is taken to be an archive(member) syntax for AIX, and the mode is adjusted > > if name and name.endswith(")") and name.rfind(".a(") > 0: > # from _ctypes import RTLD_MEMBER is not expected to be valid before Python3.6 > RTLD_MEMBER = 0x00040000 > mode |= RTLD_MEMBER Only in python-2.7.11.5/Lib/ctypes: _aixutil.py diff -r Python-2.7.11/Lib/ctypes/util.py python-2.7.11.5/Lib/ctypes/util.py 74c74,82 < if os.name == "posix" and sys.platform == "darwin": --- > if sys.platform.startswith("aix"): > # find .so members in .a files > # using dump loader header information + sys. > import ctypes._aixutil as aix > > def find_library(name): > return aix.find_library(name) > > elif os.name == "posix" and sys.platform == "darwin": 258a267,276 > if sys.platform.startswith("aix"): > # examples of working with AIX and versions, when available > print "find_library(\"c\") returns:", find_library("c") > print "find_library(\"libc\") returns:", find_library("libc") > print "find_library(\"libssl\") returns:", find_library("libssl") > # expectation is None:archive libssl64.a with member libssl64.so is non-standard > print "find_library(\"libssl64\") returns:", find_library("libssl64") > print "find_library(\"ssl\") returns:", find_library("ssl") > print "find_library(\"libiconv\") returns:", find_library("libiconv") > print "find_library(\"intl\") returns:", find_library("intl") 271,272d288 < print cdll.LoadLibrary("libm.so") < print cdll.LoadLibrary("libcrypt.so") 273a290,296 > if sys.platform.startswith("aix"): > # AIX returns different values for 32 and 64-bit looking for find_library("c"), etc. > print(cdll.LoadLibrary(find_library("c"))) > print cdll.LoadLibrary(find_library("crypt")) > else: > print(cdll.LoadLibrary("libm.so")) > print cdll.LoadLibrary("libcrypt.so") diff -r Python-2.7.11/Lib/ctypes/test/test_loading.py python-2.7.11.5/Lib/ctypes/test/test_loading.py 29a30,39 > @unittest.skipUnless(sys.platform.startswith ("aix"), > 'test specific to AIX') > def test_load_AIX_libc(self): > if (sys.maxsize < 2**32): > cdll.LoadLibrary("libc.a(shr.o)") > else: > cdll.LoadLibrary("libc.a(shr_64.o)") > self.assertRaises(OSError, cdll.LoadLibrary, "libc.so.6") > self.assertRaises(OSError, CDLL, self.unknowndll) > 41c51 < for name in ("c", "m"): --- > for name in ("c", "m", "intl", "ssl"):