diff options
author | Dominic Chen <d.c.ddcc@gmail.com> | 2013-09-21 04:54:50 -0700 |
---|---|---|
committer | Dominic Chen <d.c.ddcc@gmail.com> | 2013-09-24 16:23:20 -0700 |
commit | 0d6d7dc4381bbfe2074b7f8fb30c68cab42a7fe7 (patch) | |
tree | 49d0a064119589a90e74074d9a7f8d92d1ef3f23 | |
parent | 95521073b1a6c0eec2719a4c355c83506b325693 (diff) | |
download | klee-0d6d7dc4381bbfe2074b7f8fb30c68cab42a7fe7.tar.gz |
Replace implementation of linkWithLibrary()
-rw-r--r-- | lib/Module/ModuleUtil.cpp | 36 |
1 files 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<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); |