diff --git a/Python/importdl.c b/Python/importdl.c index b11e1e32269a..477b1048456f 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());