10#ifndef KLEE_SPECIALFUNCTIONHANDLER_H
11#define KLEE_SPECIALFUNCTIONHANDLER_H
13#include "klee/Config/config.h"
29 template<
typename T>
class ref;
35 std::vector<ref<Expr> >
37 typedef std::map<
const llvm::Function*,
53 class const_iterator :
public std::iterator<std::random_access_iterator_tag, HandlerInfo>
69 static const_iterator
begin();
70 static const_iterator
end();
85 void prepare(std::vector<const char *> &preservedFunctions);
102#define HANDLER(name) void name(ExecutionState &state, \
103 KInstruction *target, \
104 std::vector< ref<Expr> > &arguments)
114#ifdef SUPPORT_KLEE_EH_CXX
115 HANDLER(handleEhUnwindRaiseExceptionImpl);
ExecutionState representing a path under exploration.
const_iterator operator++(int)
bool operator!=(const_iterator &rhs)
const_iterator(value_type *hi)
const value_type & operator*()
bool operator==(const_iterator &rhs)
const value_type & operator[](int i)
const_iterator & operator++()
const value_type * operator->()
void(SpecialFunctionHandler::* Handler)(ExecutionState &state, KInstruction *target, std::vector< ref< Expr > > &arguments)
HANDLER(handleErrnoLocation)
HANDLER(handlePosixPreferCex)
HANDLER(handleMakeSymbolic)
class Executor & executor
static const_iterator begin()
HANDLER(handleSubOverflow)
HANDLER(handleSetForking)
HANDLER(handleStackTrace)
HANDLER(handleCheckMemoryAccess)
HANDLER(handleDeleteArray)
HANDLER(handleAddOverflow)
HANDLER(handleRevirtObjects)
HANDLER(handleCloseMerge)
HANDLER(handleWarningOnce)
HANDLER(handleSilentExit)
HANDLER(handleDivRemOverflow)
HANDLER(handlePrintRange)
HANDLER(handleUnderConstrained)
static const_iterator end()
std::string readStringAtAddress(ExecutionState &state, ref< Expr > address)
HANDLER(handleReportError)
HANDLER(handleMarkGlobal)
HANDLER(handleIsSymbolic)
std::map< const llvm::Function *, std::pair< Handler, bool > > handlers_ty
SpecialFunctionHandler(Executor &_executor)
HANDLER(handleMulOverflow)
HANDLER(handleGetObjSize)
bool handle(ExecutionState &state, llvm::Function *f, KInstruction *target, std::vector< ref< Expr > > &arguments)
HANDLER(handleAssertFail)
HANDLER(handleDefineFixedObject)
void prepare(std::vector< const char * > &preservedFunctions)
SpecialFunctionHandler::Handler handler
bool hasReturnValue
Intrinsic terminates the process.
bool doNotOverride
Intrinsic has a return value.