static int LIBUSB_CALLTYPE load_usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, size_t buflen) { LOAD_FN(usb_get_string_simple); return success ? usb_get_string_simple(dev,index,buf,buflen) : -1; }
CGObjCJit::CGObjCJit(CodeGen::CodeGenModule &cgm) : CGObjCRuntime(cgm), isUsable(false), CGM(cgm), VMContext(cgm.getLLVMContext()), ObjCTypes(cgm), JitInitFunction(0) { //puts("Constructing CGObjCJit (host runtime proxy)"); llvm::PointerType *PtrToInt8Ty = llvm::Type::getInt8Ty(VMContext)->getPointerTo(); NULLPtr = llvm::ConstantPointerNull::get(PtrToInt8Ty); // TODO: For now, just searching for pre-loaded objc runtime LOAD_FN(_objc_getClass, "objc_getClass"); // Don't bother to try the rest if the first one wasn't available if (_objc_getClass) { isUsable = true; LOAD_FN(_objc_allocateClassPair, "objc_allocateClassPair"); LOAD_FN(_objc_registerClassPair, "objc_registerClassPair"); LOAD_FN(_objc_getProtocol, "objc_getProtocol"); LOAD_FN(_object_getClass, "object_getClass"); LOAD_FN(_sel_registerName, "sel_registerName"); LOAD_FN(_class_getClassVariable, "class_getClassVariable"); LOAD_FN(_class_addIvar, "class_addIvar"); LOAD_FN(_class_addProtocol, "class_addProtocol"); LOAD_FN(_class_getMethodImplementation, "class_getMethodImplementation"); LOAD_FN(_ivar_getOffset, "ivar_getOffset"); LOAD_FN(_NSGetSizeAndAlignment, "NSGetSizeAndAlignment"); //puts("Creating .objc_jit_init()"); llvm::FunctionType *initFuncType = llvm::FunctionType::get(llvm::Type::getVoidTy(VMContext), false); JitInitFunction = cast<llvm::Function>(CGM.getModule().getOrInsertFunction( llvm::StringRef(".objc_jit_init"), initFuncType)); JitInitFunction->setLinkage(llvm::Function::PrivateLinkage); JitInitFunction->setCallingConv(llvm::CallingConv::C); JitInitBlock = llvm::BasicBlock::Create(VMContext, "entry", JitInitFunction); // Define VM objc_getClass function fn_objc_getClass.init(&CGM, "objc_getClass", ObjCTypes.ClassPtrTy, ObjCTypes.Int8PtrTy, NULL); fn_objc_getMetaClass.init(&CGM, "objc_getMetaClass", ObjCTypes.ClassPtrTy, ObjCTypes.Int8PtrTy, NULL); fn_objc_getProtocol.init(&CGM, "objc_getProtocol", ObjCTypes.ProtocolPtrTy, ObjCTypes.Int8PtrTy, NULL); fn_object_getClass.init(&CGM, "object_getClass", ObjCTypes.ClassPtrTy, ObjCTypes.ObjectPtrTy, NULL); // Define VM class_addMethod and class_replaceMethod function calls for // the init function llvm::Type *ImpParams[] = {ObjCTypes.ObjectPtrTy, ObjCTypes.SelectorPtrTy}; ImpPtrTy = llvm::FunctionType::get(ObjCTypes.ObjectPtrTy, ImpParams, false)->getPointerTo(); fn_class_addMethod.init(&CGM, "class_addMethod", llvm::Type::getInt8Ty(VMContext), ObjCTypes.ClassPtrTy, ObjCTypes.SelectorPtrTy, ImpPtrTy, ObjCTypes.Int8PtrTy, NULL); fn_class_replaceMethod.init(&CGM, "class_replaceMethod", llvm::Type::getInt8Ty(VMContext), ObjCTypes.ClassTy, ObjCTypes.SelectorPtrTy, ImpPtrTy, ObjCTypes.Int8PtrTy, NULL); fn_class_getMethodImplementation.init(&CGM, "class_getMethodImplementation", ImpPtrTy, ObjCTypes.ClassPtrTy, ObjCTypes.SelectorPtrTy, NULL); // Unfortunately, even though class_getMethodImplementation is provided by // the GNU runtime, it doesn't work on a class unless objc_msg_lookup was // called first. // LOAD_FN(_objc_msg_lookup, "objc_msg_lookup"); if (_objc_msg_lookup) { fn_objc_msg_lookup.init(&CGM, "objc_msg_lookup", ImpPtrTy, ObjCTypes.ClassPtrTy, ObjCTypes.SelectorPtrTy, NULL); } // Save 'isa' pointer value used for locally-stored prototypes void *sampleProtocol = _objc_getProtocol("NSObject"); ProtocolIsaPointer = *((void**)sampleProtocol); InitConstantStringGenerator(); } }
static bool SSL_library_load(void) { /* Load Library Pointers */ if (bSslInitDone) return true; WaitForSingleObject(g_hSslMutex, INFINITE); if (!bSslInitDone) { g_hOpenSSLCrypto = LoadLibraryA("libeay32.dll"); g_hOpenSSL = LoadLibraryA("ssleay32.dll"); if (g_hOpenSSL && g_hOpenSSLCrypto) { // load function pointers #define LOAD_FN(struc,lib, name) struc.##name = (pfn##name)GetProcAddress(lib, #name); LOAD_FN(g_OpenSSL, g_hOpenSSLCrypto, RAND_screen); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_connect); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_free); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_get_error); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_library_init); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_load_error_strings); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_new); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_peek); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_pending); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_read); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_write); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_set_fd); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_shutdown); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_CTX_free); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_CTX_new); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_CTX_ctrl); LOAD_FN(g_OpenSSL, g_hOpenSSLCrypto, CRYPTO_set_mem_functions); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSLv23_client_method); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_get_current_cipher); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_CIPHER_get_name); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_get_peer_certificate); LOAD_FN(g_OpenSSL, g_hOpenSSL, SSL_get_peer_cert_chain); LOAD_FN(g_OpenSSL, g_hOpenSSLCrypto, CRYPTO_free); LOAD_FN(g_OpenSSL, g_hOpenSSLCrypto, X509_free); LOAD_FN(g_OpenSSL, g_hOpenSSLCrypto, i2d_X509); HINSTANCE hCrypt = LoadLibraryA("crypt32.dll"); if (hCrypt) { LOAD_FN(g_Crypt, hCrypt, CertGetCertificateChain); LOAD_FN(g_Crypt, hCrypt, CertFreeCertificateChain); LOAD_FN(g_Crypt, hCrypt, CertFreeCertificateContext); LOAD_FN(g_Crypt, hCrypt, CertVerifyCertificateChainPolicy); LOAD_FN(g_Crypt, hCrypt, CertOpenStore); LOAD_FN(g_Crypt, hCrypt, CertCloseStore); LOAD_FN(g_Crypt, hCrypt, CertAddCertificateContextToStore); LOAD_FN(g_Crypt, hCrypt, CertCreateCertificateContext); } // init OpenSSL g_OpenSSL.SSL_library_init(); g_OpenSSL.SSL_load_error_strings(); g_OpenSSL.CRYPTO_set_mem_functions(mir_calloc, mir_realloc, mir_free); // FIXME check errors bSslInitDone = true; } else { SSL_library_unload(); } } ReleaseMutex(g_hSslMutex); return bSslInitDone; }
void initc(void) { PyObject *m = Py_InitModule3("c", c_funcs, "C repository types module"); Empty_TUPLE = PyTuple_New(0); None_PAIR = PyTuple_Pack(2, Py_None, Py_None); _init_view(m); _init_repository(m); _init_container(m); _init_sequence(m); _init_db(m); _init_cursor(m); _init_env(m); _init_txn(m); _init_lock(m); _init_record(m); _init_store(m); PyExc_DBError = PyErr_NewException("chandlerdb.persistence.c.DBError", NULL, NULL); PyObject_SetAttrString(m, "DBError", PyExc_DBError); MAKE_EXC(m, DBLockDeadlockError, DBError); MAKE_EXC(m, DBLockNotGrantedError, DBError); MAKE_EXC(m, DBAccessError, DBError); MAKE_EXC(m, DBBusyError, DBError); MAKE_EXC(m, DBInvalidArgError, DBError); MAKE_EXC(m, DBNoSpaceError, DBError); MAKE_EXC(m, DBNotFoundError, DBError); MAKE_EXC(m, DBNoSuchFileError, DBError); MAKE_EXC(m, DBPermissionsError, DBError); MAKE_EXC(m, DBVersionMismatchError, DBError); MAKE_EXC(m, DBRunRecoveryError, DBError); PyModule_AddIntConstant(m, "DB_VERSION_MAJOR", DB_VERSION_MAJOR); PyModule_AddIntConstant(m, "DB_VERSION_MINOR", DB_VERSION_MINOR); PyModule_AddIntConstant(m, "DB_VERSION_PATCH", DB_VERSION_PATCH); if (!(m = PyImport_ImportModule("chandlerdb.util.c"))) return; LOAD_FN(m, PyUUID_Check); LOAD_FN(m, PyUUID_Make16); LOAD_FN(m, _hash_bytes); LOAD_OBJ(m, Nil); LOAD_TYPE(m, CtxMgr); LOAD_TYPE(m, SkipList); SkipList_Node = (PyTypeObject *) PyObject_GetAttrString((PyObject *) SkipList, "Node"); Py_DECREF(m); if (!(m = PyImport_ImportModule("chandlerdb.item.c"))) return; LOAD_TYPE(m, CItem); LOAD_TYPE(m, ItemRef); LOAD_FN(m, CItem_getLocalAttributeValue); Py_DECREF(m); if (!(m = PyImport_ImportModule("chandlerdb.schema.c"))) return; LOAD_FN(m, CAttribute_invokeAfterChange); Py_DECREF(m); }
static int LIBUSB_CALLTYPE load_usb_bulk_write(usb_dev_handle *dev,int ep,char *bytes,int size,int timeout) { LOAD_FN(usb_bulk_write); return success ? usb_bulk_write(dev,ep,bytes,size,timeout) : -1; }
static int LIBUSB_CALLTYPE load_usb_reset(usb_dev_handle *dev) { LOAD_FN(usb_reset); return success ? usb_reset(dev) : -1; }