mirror of https://github.com/python/cpython
Expose RTLD_LOCAL and RTLD_GLOBAL always from the _ctypes extension module.
If RTLD_LOCAL is not #defined in any header file (Windows), set it to 0. If RTLD_GLOBAL is not #defined, set it equal to RTLD_LOCAL. This should fix ctypes on cygwin.
This commit is contained in:
parent
a4d651fbc8
commit
fff61ea025
|
@ -9,11 +9,7 @@ from _ctypes import Union, Structure, Array
|
|||
from _ctypes import _Pointer
|
||||
from _ctypes import CFuncPtr as _CFuncPtr
|
||||
from _ctypes import __version__ as _ctypes_version
|
||||
try:
|
||||
from _ctypes import RTLD_LOCAL, RTLD_GLOBAL
|
||||
except (ImportError, AttributeError):
|
||||
RTLD_GLOBAL = RTLD_LOCAL = None
|
||||
|
||||
from _ctypes import RTLD_LOCAL, RTLD_GLOBAL
|
||||
from _ctypes import ArgumentError
|
||||
|
||||
from struct import calcsize as _calcsize
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
# WORK IN PROGRESS! DO NOT (yet) USE!
|
||||
import sys, os
|
||||
import ctypes
|
||||
|
||||
__all__ = ["LibraryLoader", "RTLD_LOCAL", "RTLD_GLOBAL"]
|
||||
|
||||
if os.name in ("nt", "ce"):
|
||||
from _ctypes import LoadLibrary as dlopen
|
||||
RTLD_LOCAL = RTLD_GLOBAL = None
|
||||
else:
|
||||
from _ctypes import dlopen, RTLD_LOCAL, RTLD_GLOBAL
|
||||
from _ctypes import dlopen
|
||||
from _ctypes import RTLD_LOCAL, RTLD_GLOBAL
|
||||
|
||||
# _findLib(name) returns an iterable of possible names for a library.
|
||||
if os.name in ("nt", "ce"):
|
||||
|
|
|
@ -4575,10 +4575,20 @@ init_ctypes(void)
|
|||
PyModule_AddObject(m, "_wstring_at_addr", PyLong_FromVoidPtr(wstring_at));
|
||||
#endif
|
||||
|
||||
#ifdef RTLD_LOCAL
|
||||
/* If RTLD_LOCAL is not defined (Windows!), set it to zero. */
|
||||
#ifndef RTLD_LOCAL
|
||||
#define RTLD_LOCAL 0
|
||||
#endif
|
||||
|
||||
/* If RTLD_GLOBAL is not defined (cygwin), set it to the same value as
|
||||
RTLD_LOCAL.
|
||||
*/
|
||||
#ifndef RTLD_GLOBAL
|
||||
#define RTLD_GLOBAL RTLD_LOCAL
|
||||
#endif
|
||||
|
||||
PyModule_AddObject(m, "RTLD_LOCAL", PyInt_FromLong(RTLD_LOCAL));
|
||||
PyModule_AddObject(m, "RTLD_GLOBAL", PyInt_FromLong(RTLD_GLOBAL));
|
||||
#endif
|
||||
|
||||
PyExc_ArgError = PyErr_NewException("ctypes.ArgumentError", NULL, NULL);
|
||||
if (PyExc_ArgError) {
|
||||
|
|
Loading…
Reference in New Issue