diff options
-rw-r--r-- | lib/Module/ModuleUtil.cpp | 37 | ||||
-rw-r--r-- | tools/klee/Makefile | 2 |
2 files changed, 12 insertions, 27 deletions
diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp index 617a91ca..43eef0b7 100644 --- a/lib/Module/ModuleUtil.cpp +++ b/lib/Module/ModuleUtil.cpp @@ -15,6 +15,7 @@ #include "llvm/IR/Function.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/IntrinsicInst.h" +#include "llvm/IRReader/IRReader.h" #include "llvm/IR/Module.h" #include "llvm/Support/SourceMgr.h" #include "llvm/Support/DataStream.h" @@ -54,34 +55,18 @@ using namespace klee; Module *klee::linkWithLibrary(Module *module, const std::string &libraryName) { #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 3) - Linker linker(module); - std::string errorMessage; - - DataStreamer * streamer = getDataFileStreamer(libraryName, &errorMessage); - - if (!streamer) - fprintf(stderr, "Error Loading file: %s\n", errorMessage.c_str()); - assert(streamer); - - OwningPtr<Module> library_module; - library_module.reset(getStreamedBitcodeModule(libraryName, streamer, getGlobalContext(), &errorMessage)); - if (library_module.get() != 0 - && library_module->MaterializeAllPermanently(&errorMessage)) { - library_module.reset(); + SMDiagnostic err; + std::string err_str; + sys::Path libraryPath(libraryName); + Module *new_mod = ParseIRFile(libraryPath.str(), err, +module->getContext()); + + if (Linker::LinkModules(module, new_mod, Linker::DestroySource, +&err_str)) { + assert(0 && "linked in library failed!"); } - if (library_module.get() == 0) { - errs() << errorMessage << " for " << libraryName << "\n"; - assert(library_module.get()); - } - if (linker.linkInModule(library_module.get(), &errorMessage)){ - fprintf(stderr, "Error in Linking %s; Existing module: %s, library to be linked in %s\n", errorMessage.c_str(), - module->getModuleIdentifier().c_str(), libraryName.c_str()); - assert(0 && "linking in library failed!"); - } - - return linker.getModule(); - + return module; #else Linker linker("klee", module, false); diff --git a/tools/klee/Makefile b/tools/klee/Makefile index 01486fef..0721695f 100644 --- a/tools/klee/Makefile +++ b/tools/klee/Makefile @@ -13,7 +13,7 @@ TOOLNAME = klee include $(LEVEL)/Makefile.config USEDLIBS = kleeCore.a kleeBasic.a kleeModule.a kleaverSolver.a kleaverExpr.a kleeSupport.a -LINK_COMPONENTS = jit bitreader bitwriter ipo linker engine +LINK_COMPONENTS = jit bitreader bitwriter ipo linker engine irreader include $(LEVEL)/Makefile.common |