summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/importdl.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Python/importdl.c b/Python/importdl.c
index b11e1e3..477b104 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -171,6 +171,9 @@ typedef void (*dl_funcptr)();
#ifndef RTLD_LAZY
#define RTLD_LAZY 1
#endif
+#ifndef RTLD_GLOBAL
+#define RTLD_GLOBAL 0
+#endif
#define SHORT_EXT ".so"
#define LONG_EXT "module.so"
#endif /* USE_SHLIB */
@@ -362,12 +365,13 @@ _PyImport_LoadDynamicModule(name, pathname, fp)
#ifdef RTLD_NOW
/* RTLD_NOW: resolve externals now
(i.e. core dump now if some are missing) */
- void *handle = dlopen(pathname, RTLD_NOW);
+ void *handle = dlopen(pathname, RTLD_NOW | RTLD_GLOBAL);
#else
void *handle;
if (Py_VerboseFlag)
- printf("dlopen(\"%s\", %d);\n", pathname, RTLD_LAZY);
- handle = dlopen(pathname, RTLD_LAZY);
+ printf("dlopen(\"%s\", %d);\n", pathname,
+ RTLD_LAZY | RTLD_GLOBAL);
+ handle = dlopen(pathname, RTLD_LAZY | RTLD_GLOBAL);
#endif /* RTLD_NOW */
if (handle == NULL) {
PyErr_SetString(PyExc_ImportError, dlerror());