From: Guido van Rossum Date: Tue, 2 Dec 1997 20:43:18 +0000 (+0000) Subject: Add the flag RTLD_GLOBAL to the dlopen() options. X-Git-Tag: v1.5b2~120 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08052c7bb6ef674782ccef7dc11d71cbe398b5a5;p=thirdparty%2FPython%2Fcpython.git Add the flag RTLD_GLOBAL to the dlopen() options. This exports symbols defined by the loaded extension to other extensions (loaded later). (I'm not quite sure about this but suppose it can't hurt...) --- 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());