summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_bytes.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2012-06-03 00:22:58 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2012-06-03 00:22:58 (GMT)
commita948c79ad42f25be575946e0cd45cf90d8f89385 (patch)
tree8fb69fdb0a80394f8e8cb8a785a7da403334fae3 /Lib/test/test_bytes.py
parent7f671338def9208bad1e5032c8c08a6cade46491 (diff)
downloadcpython-a948c79ad42f25be575946e0cd45cf90d8f89385.zip
cpython-a948c79ad42f25be575946e0cd45cf90d8f89385.tar.gz
cpython-a948c79ad42f25be575946e0cd45cf90d8f89385.tar.bz2
Issue 10365: Add and replace comments; condense defaulted attribute access.
Code patch by Roger Serwy.
Diffstat (limited to 'Lib/test/test_bytes.py')
0 files changed, 0 insertions, 0 deletions
an> #include <mach-o/dyld.h> const struct filedescr _PyImport_DynLoadFiletab[] = { {".so", "rb", C_EXTENSION}, {"module.so", "rb", C_EXTENSION}, {0, 0} }; /* ** 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_GetDynLoadFunc(const char *fqname, 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), "_init%.200s", 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; }