10#ifndef KLEE_EXECUTIONSTATE_H
11#define KLEE_EXECUTIONSTATE_H
37struct InstructionInfo;
46 std::vector<const MemoryObject *>
allocas;
89 virtual std::unique_ptr<UnwindingInformation>
clone()
const = 0;
106 std::unique_ptr<UnwindingInformation>
clone()
const {
107 return std::make_unique<SearchPhaseUnwindingInformation>(*
this);
137 std::unique_ptr<UnwindingInformation>
clone()
const {
138 return std::make_unique<CleanupPhaseUnwindingInformation>(*
this);
235 std::uint32_t
id = 0;
Implementation of the region based merging.
ExecutionState representing a path under exploration.
stack_ty stack
Stack representing the current instruction stream.
void addConstraint(ref< Expr > e)
void pushFrame(KInstIterator caller, KFunction *kf)
std::map< const std::string *, std::set< std::uint32_t > > coveredLines
Set containing which lines in which files are covered by this state.
void addSymbolic(const MemoryObject *mo, const Array *array)
static std::uint32_t nextID
the global state counter
PTreeNode * ptreeNode
Pointer to the process tree of the current state Copies of ExecutionState should not copy ptreeNode.
std::set< std::string > arrayNames
Set of used array names for this state. Used to avoid collisions.
std::uint32_t incomingBBIndex
Remember from which Basic Block control flow arrived (i.e. to select the right phi values)
ExecutionState(ExecutionState &&) noexcept=delete
std::uint32_t getID() const
std::unique_ptr< UnwindingInformation > unwindingInformation
Keep track of unwinding state while unwinding, otherwise empty.
bool forkDisabled
Disables forking for this state. Set by user code.
SolverQueryMetaData queryMetaData
Statistics and information.
ConstraintSet constraints
Constraints collected so far.
std::vector< ref< MergeHandler > > openMergeStack
The objects handling the klee_open_merge calls this state ran through.
TreeOStream pathOS
History of complete path: represents branches taken to reach/create this state (both concrete and sym...
bool merge(const ExecutionState &b)
std::vector< StackFrame > stack_ty
std::uint32_t id
the state id
AddressSpace addressSpace
Address space used by this state (e.g. Global and Heap)
std::vector< std::pair< ref< const MemoryObject >, const Array * > > symbolics
Ordered list of symbolics: used to generate test cases.
void dumpStack(llvm::raw_ostream &out) const
void addCexPreference(const ref< Expr > &cond)
TreeOStream symPathOS
History of symbolic path: represents symbolic branches taken to reach/create this state.
ExecutionState(const ExecutionState &state)
KInstIterator prevPC
Pointer to instruction which is currently executed.
bool coveredNew
Whether a new instruction was covered in this state.
std::uint64_t steppedInstructions
The numbers of times this state has run through Executor::stepInstruction.
std::uint32_t depth
Exploration depth, i.e., number of times KLEE branched for this state.
ExecutionState * branch()
ImmutableSet< ref< Expr > > cexPreferences
A set of boolean expressions the user has requested be true of a counterexample.
std::uint32_t instsSinceCovNew
Counts how many instructions were executed since the last new instruction was covered.
KInstIterator pc
Pointer to instruction to be executed after the current instruction.
ExecutionState & operator=(const ExecutionState &)=delete
Class representing symbolic expressions.
llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const MemoryMap &mm)
ImmutableMap< const MemoryObject *, ref< ObjectState >, MemoryObjectLT > MemoryMap
bool operator()(const ExecutionState *a, const ExecutionState *b) const
std::vector< const MemoryObject * > allocas
StackFrame(KInstIterator caller, KFunction *kf)
unsigned minDistToUncoveredOnReturn
CallPathNode * callPathNode