+ Module *D = unwrap(Dest);
+ LLVMContext &Ctx = D->getContext();
+
+ LLVMContext::DiagnosticHandlerTy OldHandler = Ctx.getDiagnosticHandler();
+ void *OldDiagnosticContext = Ctx.getDiagnosticContext();
+ std::string Message;
+ Ctx.setDiagnosticHandler(bindingDiagnosticHandler, &Message);
+ LLVMBool Result = Linker::LinkModules(D, unwrap(Src), Mode);
+ Ctx.setDiagnosticHandler(OldHandler, OldDiagnosticContext);
+
+ if (OutMessages && Result)
+ *OutMessages = strdup(Message.c_str());