Predator
[unstable] git snapshot
|
extension of SymProc, now only used by SymExecEngine::execNontermInsn() More...
#include <symproc.hh>
Public Member Functions | |
SymExecCore (SymHeap &heap, const SymBackTrace *bt, const SymExecCoreParams &ep=SymExecCoreParams()) | |
creation of the symbolic heap processor is a really cheap operation | |
const SymExecCoreParams & | params () const |
bool | exec (SymState &dst, const CodeStorage::Insn &insn) |
execute a non-terminal instruction using the managed symbolic heap | |
void | execStackAlloc (const struct cl_operand &opLhs, const TSizeRange &) |
void | execStackRestore () |
void | execHeapAlloc (SymState &dst, const CodeStorage::Insn &insn, TSizeRange size, bool nullified) |
void | execFree (TValId val) |
SymHeap & | sh () |
const SymBackTrace * | bt () |
struct cl_loc * | lw () |
void | setLocation (const struct cl_loc *lw) |
update location info | |
FldHandle | fldByOperand (const struct cl_operand &op) |
obtain a heap object corresponding to the given operand | |
TValId | valFromOperand (const struct cl_operand &op) |
obtain a heap value corresponding to the given operand | |
bool | fncFromOperand (int *pUid, const struct cl_operand &op) |
resolve Fnc uid from the given operand, return true on success | |
void | setValueOf (const FldHandle &lhs, TValId rhs) |
high-level interface to FldHandle::setValue() | |
void | objDestroy (TObjId obj) |
high-level interface to SymHeap::objInvalidate() | |
void | killInsn (const CodeStorage::Insn &) |
invalidate all variables that are killed by the given instruction | |
void | killPerTarget (const CodeStorage::Insn &, unsigned target) |
invalidate all variables killed by the given instruction per target | |
bool | checkForInvalidDeref (TValId val, TSizeOf sizeOfTarget) |
check whether we can safely access sizeOfTarget at the given address | |
void | printBackTrace (EMsgLevel level, bool forcePtrace=false) |
print backtrace and update the current error level correspondingly | |
bool | hasFatalError () const |
if true, the current state is not going to be inserted into dst |
Protected Member Functions | |
virtual void | varInit (TObjId reg) |
TObjId | objByVar (const CVar &cv, bool initOnly=false) |
TObjId | objByVar (const struct cl_operand &op) |
TValId | targetAt (const struct cl_operand &op) |
Protected Attributes | |
SymHeap & | sh_ |
const SymBackTrace * | bt_ |
struct cl_loc * | lw_ |
bool | errorDetected_ |
Private Member Functions | |
template<int ARITY> | |
void | execOp (const CodeStorage::Insn &insn) |
template<class TDerefs > | |
bool | concretizeLoop (SymState &dst, const CodeStorage::Insn &insn, const TDerefs &derefs) |
void | handleLabel (const CodeStorage::Insn &) |
bool | execCore (SymState &dst, const CodeStorage::Insn &insn) |
Private Attributes | |
const SymExecCoreParams | ep_ |
extension of SymProc, now only used by SymExecEngine::execNontermInsn()
Definition at line 213 of file symproc.hh.
|
inline |
creation of the symbolic heap processor is a really cheap operation
ep | execution parameters - see SymExecCoreParams for details |
Definition at line 219 of file symproc.hh.
|
inlineinherited |
Definition at line 114 of file symproc.hh.
References SymProc::bt_.
check whether we can safely access sizeOfTarget at the given address
|
private |
bool exec | ( | SymState & | dst, |
const CodeStorage::Insn & | insn | ||
) |
execute a non-terminal instruction using the managed symbolic heap
dst | a container to store the result(s) to |
insn | an instruction to be executed |
|
private |
void execFree | ( | TValId | val | ) |
void execHeapAlloc | ( | SymState & | dst, |
const CodeStorage::Insn & | insn, | ||
TSizeRange | size, | ||
bool | nullified | ||
) |
|
private |
void execStackAlloc | ( | const struct cl_operand & | opLhs, |
const TSizeRange & | |||
) |
void execStackRestore | ( | ) |
|
inherited |
obtain a heap object corresponding to the given operand
|
inherited |
resolve Fnc uid from the given operand, return true on success
|
private |
|
inherited |
if true, the current state is not going to be inserted into dst
|
inherited |
invalidate all variables that are killed by the given instruction
|
inherited |
invalidate all variables killed by the given instruction per target
|
inlinereadinherited |
Definition at line 115 of file symproc.hh.
References SymProc::lw_.
Referenced by SymProc::setLocation().
|
protectedinherited |
|
inherited |
high-level interface to SymHeap::objInvalidate()
|
inline |
Definition at line 226 of file symproc.hh.
References ep_.
|
inherited |
print backtrace and update the current error level correspondingly
|
inlineinherited |
update location info
lw | where to retrieve the location info from |
Definition at line 123 of file symproc.hh.
References SymProc::lw(), and SymProc::lw_.
high-level interface to FldHandle::setValue()
|
inlineinherited |
|
protectedinherited |
|
inherited |
obtain a heap value corresponding to the given operand
|
protectedinherited |
Definition at line 172 of file symproc.hh.
Referenced by SymProc::bt().
|
private |
Definition at line 271 of file symproc.hh.
Referenced by params().
|
protectedinherited |
Definition at line 174 of file symproc.hh.
|
protectedinherited |
Definition at line 173 of file symproc.hh.
Referenced by SymProc::lw(), and SymProc::setLocation().
|
protectedinherited |
Definition at line 171 of file symproc.hh.
Referenced by SymProc::sh().