From 0d6d7dc4381bbfe2074b7f8fb30c68cab42a7fe7 Mon Sep 17 00:00:00 2001 From: Dominic Chen Date: Sat, 21 Sep 2013 04:54:50 -0700 Subject: Replace implementation of linkWithLibrary() --- lib/Module/ModuleUtil.cpp | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp index 617a91ca..23768423 100644 --- a/lib/Module/ModuleUtil.cpp +++ b/lib/Module/ModuleUtil.cpp @@ -54,34 +54,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 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); -- cgit 1.4.1 From 5326f3014757cc43710127445566f643fe0e8777 Mon Sep 17 00:00:00 2001 From: Dominic Chen Date: Sun, 22 Sep 2013 14:09:35 -0700 Subject: Add missing header file and linker parameter --- lib/Module/ModuleUtil.cpp | 1 + tools/klee/Makefile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp index 23768423..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" 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 -- cgit 1.4.1