diff options
-rw-r--r-- | Python/importdl.c | 10 |
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()); |