mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Fix #1467450: ctypes now uses RTLD_GLOBAL by default on OSX 10.3 to
load shared libraries.
This commit is contained in:
parent
a1f1090109
commit
47d7a069d1
2 changed files with 20 additions and 1 deletions
|
@ -22,6 +22,23 @@ if __version__ != _ctypes_version:
|
||||||
if _os.name in ("nt", "ce"):
|
if _os.name in ("nt", "ce"):
|
||||||
from _ctypes import FormatError
|
from _ctypes import FormatError
|
||||||
|
|
||||||
|
DEFAULT_MODE = RTLD_LOCAL
|
||||||
|
if _os.name == "posix" and _sys.platform == "darwin":
|
||||||
|
import gestalt
|
||||||
|
|
||||||
|
# gestalt.gestalt("sysv") returns the version number of the
|
||||||
|
# currently active system file as BCD.
|
||||||
|
# On OS X 10.4.6 -> 0x1046
|
||||||
|
# On OS X 10.2.8 -> 0x1028
|
||||||
|
# See also http://www.rgaros.nl/gestalt/
|
||||||
|
#
|
||||||
|
# On OS X 10.3, we use RTLD_GLOBAL as default mode
|
||||||
|
# because RTLD_LOCAL does not work at least on some
|
||||||
|
# libraries.
|
||||||
|
|
||||||
|
if gestalt.gestalt("sysv") < 0x1040:
|
||||||
|
DEFAULT_MODE = RTLD_GLOBAL
|
||||||
|
|
||||||
from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \
|
from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \
|
||||||
FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI
|
FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI
|
||||||
|
|
||||||
|
@ -284,7 +301,7 @@ class CDLL(object):
|
||||||
_flags_ = _FUNCFLAG_CDECL
|
_flags_ = _FUNCFLAG_CDECL
|
||||||
_restype_ = c_int # default, can be overridden in instances
|
_restype_ = c_int # default, can be overridden in instances
|
||||||
|
|
||||||
def __init__(self, name, mode=RTLD_LOCAL, handle=None):
|
def __init__(self, name, mode=DEFAULT_MODE, handle=None):
|
||||||
self._name = name
|
self._name = name
|
||||||
if handle is None:
|
if handle is None:
|
||||||
self._handle = _dlopen(self._name, mode)
|
self._handle = _dlopen(self._name, mode)
|
||||||
|
|
|
@ -22,6 +22,8 @@ Library
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the
|
||||||
|
default mode for loading shared libraries in ctypes.
|
||||||
|
|
||||||
What's New in Python 2.5 beta 2?
|
What's New in Python 2.5 beta 2?
|
||||||
================================
|
================================
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue