From b64b96f721edc32bb806ef182f8097053585685d Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Fri, 17 Jan 2014 10:42:15 +0100 Subject: Make KLEE fail in case main function is missing Existence of main() function is checked with assertion. This check fails if KLEE is compiled in Release mode. --- lib/Module/KModule.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/Module') diff --git a/lib/Module/KModule.cpp b/lib/Module/KModule.cpp index 34e5f60c..2ecb14b8 100644 --- a/lib/Module/KModule.cpp +++ b/lib/Module/KModule.cpp @@ -182,7 +182,8 @@ static void injectStaticConstructorsAndDestructors(Module *m) { if (ctors || dtors) { Function *mainFn = m->getFunction("main"); - assert(mainFn && "unable to find main function"); + if (!mainFn) + klee_error("Could not find main() function."); if (ctors) CallInst::Create(getStubFunctionForCtorList(m, ctors, "klee.ctor_stub"), -- cgit 1.4.1 From 2f6dafae68e88f6a16f6df42e0b212767e95aebe Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Fri, 17 Jan 2014 10:45:49 +0100 Subject: Fix error message for failing linking of libraries In case linking of external libraries failed, user would only be informed if KLEE is compiled with assertions enabled. This fix lets KLEE always fail. --- lib/Module/ModuleUtil.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/Module') diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp index fcdfa35a..9ae72936 100644 --- a/lib/Module/ModuleUtil.cpp +++ b/lib/Module/ModuleUtil.cpp @@ -9,6 +9,8 @@ #include "klee/Internal/Support/ModuleUtil.h" #include "klee/Config/Version.h" +// FIXME: This does not belong here. +#include "../Core/Common.h" #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 3) #include "llvm/Bitcode/ReaderWriter.h" @@ -55,7 +57,7 @@ module->getContext()); if (Linker::LinkModules(module, new_mod, Linker::DestroySource, &err_str)) { - assert(0 && "linked in library failed!"); + klee_error("Linking library %s failed", libraryName.c_str()); } return module; @@ -66,7 +68,7 @@ module->getContext()); bool native = false; if (linker.LinkInFile(libraryPath, native)) { - assert(0 && "linking in library failed!"); + klee_error("Linking library %s failed", libraryName.c_str()); } return linker.releaseModule(); -- cgit 1.4.1