mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	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...)
This commit is contained in:
		
							parent
							
								
									c425d2f87b
								
							
						
					
					
						commit
						08052c7bb6
					
				
					 1 changed files with 7 additions and 3 deletions
				
			
		|  | @ -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()); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum