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 <[email protected]>
<http://bugs.python.org/issue26439>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com