Michael Felt added the comment: The _dlopen call in __init__.py I have been able to fix (hack) with the following:
root@x064:[/data/prj/aixtools/python/python-2.7.10/Lib/ctypes]diff -u __init__.py /opt/lib/python2.7/ctypes/__init__.py --- __init__.py 2015-05-23 16:09:01 +0000 +++ /opt/lib/python2.7/ctypes/__init__.py 2016-02-26 08:40:19 +0000 @@ -11,6 +11,7 @@ from _ctypes import _Pointer from _ctypes import CFuncPtr as _CFuncPtr from _ctypes import __version__ as _ctypes_version +# from _ctypes import RTLD_LOCAL, RTLD_GLOBAL, RTLD_NOW ## fails from _ctypes import RTLD_LOCAL, RTLD_GLOBAL from _ctypes import ArgumentError @@ -32,6 +33,11 @@ if int(_os.uname()[2].split('.')[0]) < 8: DEFAULT_MODE = RTLD_GLOBAL +if _os.name == "posix" and _sys.platform.startswith("aix"): + RTLD_NOW = 0x00000002 + RTLD_MEMBER = 0x00040000 + DEFAULT_MODE |= (RTLD_NOW | RTLD_MEMBER) + from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \ FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI, \ FUNCFLAG_USE_ERRNO as _FUNCFLAG_USE_ERRNO, \ I have an additional hack in util.py so that, e.g., find_Library("crypto") returns: '/usr/lib/libcrypto.a(libcrypto.so)' When that is passed to dlopen (plus RTLD_MEMBER) the dlopen succeeds. <CDLL '/usr/lib/libcrypto.a/(libcrypto.so)', handle 6 at 30146670> With some help in util.py, to do some sensible searching, being able to establish if in 32 or 64-bit mode, etc. somehing nice can be made here (imho). p.s. can any verify whether this is limited to python 2.7? Or should python 3.X be added as well? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26439> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com