diff options
author | Benjamin Peterson <benjamin@python.org> | 2017-12-21 21:43:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-21 21:43:09 -0800 |
commit | 62ed6be8da5fd1142f838582ecdb338af539e85b (patch) | |
tree | 397ae47c5914d276d3b38fd6079e6bac57668fe0 /Python | |
parent | 424315fa865b43f67e36a40647107379adf031da (diff) | |
download | cpython-git-62ed6be8da5fd1142f838582ecdb338af539e85b.tar.gz |
remove the dynload_next.c file (closes bpo-32386) (#4957)
Diffstat (limited to 'Python')
-rw-r--r-- | Python/dynload_next.c | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/Python/dynload_next.c b/Python/dynload_next.c deleted file mode 100644 index 83a8b2bb31..0000000000 --- a/Python/dynload_next.c +++ /dev/null @@ -1,111 +0,0 @@ - -/* Support for dynamic loading of extension modules on Mac OS X -** All references to "NeXT" are for historical reasons. -*/ - -#include "Python.h" -#include "importdl.h" - -#include <mach-o/dyld.h> - -const char *_PyImport_DynLoadFiletab[] = {".so", NULL}; - -/* -** Python modules are Mach-O MH_BUNDLE files. The best way to load these -** is each in a private namespace, so you can load, say, a module bar and a -** module foo.bar. If we load everything in the global namespace the two -** initbar() symbols will conflict. -** However, it seems some extension packages depend upon being able to access -** each others' global symbols. There seems to be no way to eat our cake and -** have it, so the USE_DYLD_GLOBAL_NAMESPACE define determines which behaviour -** you get. -*/ - -#ifdef USE_DYLD_GLOBAL_NAMESPACE -#define LINKOPTIONS NSLINKMODULE_OPTION_BINDNOW|NSLINKMODULE_OPTION_RETURN_ON_ERROR -#else -#define LINKOPTIONS NSLINKMODULE_OPTION_BINDNOW| \ - NSLINKMODULE_OPTION_RETURN_ON_ERROR|NSLINKMODULE_OPTION_PRIVATE -#endif -dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix, - const char *shortname, - const char *pathname, FILE *fp) -{ - dl_funcptr p = NULL; - char funcname[258]; - NSObjectFileImageReturnCode rc; - NSObjectFileImage image; - NSModule newModule; - NSSymbol theSym; - const char *errString; - char errBuf[512]; - - PyOS_snprintf(funcname, sizeof(funcname), "_%.20s_%.200s", prefix, shortname); - -#ifdef USE_DYLD_GLOBAL_NAMESPACE - if (NSIsSymbolNameDefined(funcname)) { - theSym = NSLookupAndBindSymbol(funcname); - p = (dl_funcptr)NSAddressOfSymbol(theSym); - return p; - } -#endif - rc = NSCreateObjectFileImageFromFile(pathname, &image); - switch(rc) { - default: - case NSObjectFileImageFailure: - case NSObjectFileImageFormat: - /* for these a message is printed on stderr by dyld */ - errString = "Can't create object file image"; - break; - case NSObjectFileImageSuccess: - errString = NULL; - break; - case NSObjectFileImageInappropriateFile: - errString = "Inappropriate file type for dynamic loading"; - break; - case NSObjectFileImageArch: - errString = "Wrong CPU type in object file"; - break; - case NSObjectFileImageAccess: - errString = "Can't read object file (no access)"; - break; - } - if (errString == NULL) { - newModule = NSLinkModule(image, pathname, LINKOPTIONS); - if (newModule == NULL) { - int errNo; - const char *fileName, *moreErrorStr; - NSLinkEditErrors c; - NSLinkEditError( &c, &errNo, &fileName, &moreErrorStr ); - PyOS_snprintf(errBuf, 512, "Failure linking new module: %s: %s", - fileName, moreErrorStr); - errString = errBuf; - } - } - if (errString != NULL) { - PyErr_SetString(PyExc_ImportError, errString); - return NULL; - } -#ifdef USE_DYLD_GLOBAL_NAMESPACE - if (!NSIsSymbolNameDefined(funcname)) { - /* UnlinkModule() isn't implemented in current versions, but calling it does no harm */ - /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */ - PyErr_Format(PyExc_ImportError, - "Loaded module does not contain symbol %.200s", - funcname); - return NULL; - } - theSym = NSLookupAndBindSymbol(funcname); -#else - theSym = NSLookupSymbolInModule(newModule, funcname); - if ( theSym == NULL ) { - /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */ - PyErr_Format(PyExc_ImportError, - "Loaded module does not contain symbol %.200s", - funcname); - return NULL; - } -#endif - p = (dl_funcptr)NSAddressOfSymbol(theSym); - return p; -} |