diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2017-02-22 16:10:21 +0100 |
---|---|---|
committer | Jiri Slaby <jirislaby@gmail.com> | 2017-02-25 11:11:04 +0100 |
commit | 4c8fabc7de30e17ef116b8f413f3a973c29cb56c (patch) | |
tree | 29e23676c07a95e83c58b5bcb5f8fd4189efaf45 /tools | |
parent | 1b67624c3a2fc1ca6f60d0a2b0f675d046dbba76 (diff) | |
download | klee-4c8fabc7de30e17ef116b8f413f3a973c29cb56c.tar.gz |
llvm: stop using global context
It was marked as deprecated long time ago and finally removed in LLVM 3.9. Remove all uses of getGlobalContext and create our own context. Propagate it all over the code then. [v2] use ctx, not C as name Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/klee/main.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/tools/klee/main.cpp b/tools/klee/main.cpp index e95522a0..505d259c 100644 --- a/tools/klee/main.cpp +++ b/tools/klee/main.cpp @@ -689,11 +689,12 @@ static int initEnv(Module *mainModule) { /* Insert void klee_init_env(int* argc, char*** argv) */ std::vector<const Type*> params; - params.push_back(Type::getInt32Ty(getGlobalContext())); - params.push_back(Type::getInt32Ty(getGlobalContext())); + LLVMContext &ctx = mainModule->getContext(); + params.push_back(Type::getInt32Ty(ctx)); + params.push_back(Type::getInt32Ty(ctx)); Function* initEnvFn = cast<Function>(mainModule->getOrInsertFunction("klee_init_env", - Type::getVoidTy(getGlobalContext()), + Type::getVoidTy(ctx), argcPtr->getType(), argvPtr->getType(), NULL)); @@ -1032,6 +1033,7 @@ static void replaceOrRenameFunction(llvm::Module *module, } } static llvm::Module *linkWithUclibc(llvm::Module *mainModule, StringRef libDir) { + LLVMContext &ctx = mainModule->getContext(); // Ensure that klee-uclibc exists SmallString<128> uclibcBCA(libDir); llvm::sys::path::append(uclibcBCA, KLEE_UCLIBC_BCA_NAME); @@ -1044,13 +1046,13 @@ static llvm::Module *linkWithUclibc(llvm::Module *mainModule, StringRef libDir) Function *f; // force import of __uClibc_main mainModule->getOrInsertFunction("__uClibc_main", - FunctionType::get(Type::getVoidTy(getGlobalContext()), + FunctionType::get(Type::getVoidTy(ctx), std::vector<LLVM_TYPE_Q Type*>(), true)); // force various imports if (WithPOSIXRuntime) { - LLVM_TYPE_Q llvm::Type *i8Ty = Type::getInt8Ty(getGlobalContext()); + LLVM_TYPE_Q llvm::Type *i8Ty = Type::getInt8Ty(ctx); mainModule->getOrInsertFunction("realpath", PointerType::getUnqual(i8Ty), PointerType::getUnqual(i8Ty), @@ -1060,12 +1062,12 @@ static llvm::Module *linkWithUclibc(llvm::Module *mainModule, StringRef libDir) PointerType::getUnqual(i8Ty), NULL); mainModule->getOrInsertFunction("__fgetc_unlocked", - Type::getInt32Ty(getGlobalContext()), + Type::getInt32Ty(ctx), PointerType::getUnqual(i8Ty), NULL); mainModule->getOrInsertFunction("__fputc_unlocked", - Type::getInt32Ty(getGlobalContext()), - Type::getInt32Ty(getGlobalContext()), + Type::getInt32Ty(ctx), + Type::getInt32Ty(ctx), PointerType::getUnqual(i8Ty), NULL); } @@ -1130,11 +1132,11 @@ static llvm::Module *linkWithUclibc(llvm::Module *mainModule, StringRef libDir) std::vector<LLVM_TYPE_Q Type*> fArgs; fArgs.push_back(ft->getParamType(1)); // argc fArgs.push_back(ft->getParamType(2)); // argv - Function *stub = Function::Create(FunctionType::get(Type::getInt32Ty(getGlobalContext()), fArgs, false), + Function *stub = Function::Create(FunctionType::get(Type::getInt32Ty(ctx), fArgs, false), GlobalVariable::ExternalLinkage, EntryPoint, mainModule); - BasicBlock *bb = BasicBlock::Create(getGlobalContext(), "entry", stub); + BasicBlock *bb = BasicBlock::Create(ctx, "entry", stub); std::vector<llvm::Value*> args; args.push_back(llvm::ConstantExpr::getBitCast(userMainFn, @@ -1151,7 +1153,7 @@ static llvm::Module *linkWithUclibc(llvm::Module *mainModule, StringRef libDir) CallInst::Create(uclibcMainFn, args.begin(), args.end(), "", bb); #endif - new UnreachableInst(getGlobalContext(), bb); + new UnreachableInst(ctx, bb); klee_message("NOTE: Using klee-uclibc : %s", uclibcBCA.c_str()); return mainModule; @@ -1236,6 +1238,7 @@ int main(int argc, char **argv, char **envp) { // Load the bytecode... std::string ErrorMsg; + LLVMContext ctx; Module *mainModule = 0; #if LLVM_VERSION_CODE < LLVM_VERSION(3, 5) OwningPtr<MemoryBuffer> BufferPtr; @@ -1245,7 +1248,7 @@ int main(int argc, char **argv, char **envp) { ec.message().c_str()); } - mainModule = getLazyBitcodeModule(BufferPtr.get(), getGlobalContext(), &ErrorMsg); + mainModule = getLazyBitcodeModule(BufferPtr.get(), ctx, &ErrorMsg); if (mainModule) { if (mainModule->MaterializeAllPermanently(&ErrorMsg)) { @@ -1262,7 +1265,7 @@ int main(int argc, char **argv, char **envp) { klee_error("error loading program '%s': %s", InputFile.c_str(), Buffer.getError().message().c_str()); - auto mainModuleOrError = getLazyBitcodeModule(Buffer->get(), getGlobalContext()); + auto mainModuleOrError = getLazyBitcodeModule(Buffer->get(), ctx); if (!mainModuleOrError) { klee_error("error loading program '%s': %s", InputFile.c_str(), @@ -1387,7 +1390,7 @@ int main(int argc, char **argv, char **envp) { IOpts.MakeConcreteSymbolic = MakeConcreteSymbolic; KleeHandler *handler = new KleeHandler(pArgc, pArgv); Interpreter *interpreter = - theInterpreter = Interpreter::create(IOpts, handler); + theInterpreter = Interpreter::create(ctx, IOpts, handler); handler->setInterpreter(interpreter); for (int i=0; i<argc; i++) { |