33 #ifndef Z3_EXAMPLE_SVFIR2ITVEXESTATE_H
34 #define Z3_EXAMPLE_SVFIR2ITVEXESTATE_H
virtual bool inAddrToValTable(u32_t id) const
whether the memory address stores abstract value
bool inAddrToAddrsTable(u32_t id) const
whether the memory address stores memory addresses
bool inVarToAddrsTable(u32_t id) const
whether the variable is in varToAddrs table
static u32_t getVirtualMemAddress(u32_t idx)
The physical address starts with 0x7f...... + idx.
static u32_t getInternalID(u32_t idx)
Return the internal index if idx is an address otherwise return the value of idx.
virtual bool inVarToValTable(u32_t id) const
whether the variable is in varToVal table
static bool isVirtualMemAddress(u32_t val)
Check bit value of val start with 0x7F000000, filter by 0xFF000000.
SVFIR2AbsState(SVFIR *ir)
void handleSelect(AbstractState &es, const SelectStmt *select)
void handlePhi(AbstractState &es, const PhiStmt *phi)
IntervalValue getRangeLimitFromType(const SVFType *type)
Return the value range of Integer SVF Type, e.g. unsigned i8 Type->[0, 255], signed i8 Type->[-128,...
bool inVarToValTable(const AbstractState &es, u32_t id) const
whether the variable is in varToVal table
bool inVarToAddrsTable(const AbstractState &es, u32_t id) const
whether the variable is in varToAddrs table
IntervalValue getFPTruncValue(const AbstractState &es, const SVFVar *var, const SVFType *dstType)
static z3::context & getContext()
static bool isVirtualMemAddress(u32_t val)
Check bit value of val start with 0x7F000000, filter by 0xFF000000.
void handleLoad(AbstractState &es, const LoadStmt *load)
IntervalValue getFPToUIntValue(const AbstractState &es, const SVFVar *var)
static AbstractValue globalNulladdrs
void narrowAddrs(AbstractState &es, AbstractState &lhs, const AbstractState &rhs)
bool inLocToValTable(const AbstractState &es, u32_t id) const
whether the memory address stores a interval value
void initObjVar(AbstractState &as, const ObjVar *var)
Init ObjVar.
AbstractValue & getAddrs(AbstractState &es, u32_t id)
static u32_t getVirtualMemAddress(u32_t idx)
The physical address starts with 0x7f...... + idx.
IntervalValue getByteOffset(const AbstractState &es, const GepStmt *gep)
void handleCmp(AbstractState &es, const CmpStmt *cmp)
void handleGep(AbstractState &es, const GepStmt *gep)
void handleStore(AbstractState &es, const StoreStmt *store)
AddressValue getGepObjAddress(AbstractState &es, u32_t pointer, APOffset offset)
Return the field address given a pointer points to a struct object and an offset.
bool inAddrTable(const AbstractState &es, u32_t id) const
IntervalValue getUIntToFPValue(const AbstractState &es, const SVFVar *var)
IntervalValue getZExtValue(const AbstractState &es, const SVFVar *var)
void handleRet(AbstractState &es, const RetPE *retPE)
IntervalValue getElementIndex(const AbstractState &es, const GepStmt *gep)
Return the offset expression of a GepStmt.
IntervalValue getFPToSIntValue(const AbstractState &es, const SVFVar *var)
void handleBinary(AbstractState &es, const BinaryOPStmt *binary)
void applySummary(AbstractState &es)
IntervalValue getSExtValue(const AbstractState &es, const SVFVar *var)
void setRelEs(const RelExeState &relEs)
IntervalValue getSIntToFPValue(const AbstractState &es, const SVFVar *var)
void handleCopy(AbstractState &es, const CopyStmt *copy)
static u32_t getInternalID(u32_t idx)
Return the internal index if idx is an address otherwise return the value of idx.
bool inVarTable(const AbstractState &es, u32_t id) const
void handleCall(AbstractState &es, const CallPE *callPE)
void widenAddrs(AbstractState &es, AbstractState &lhs, const AbstractState &rhs)
bool inLocToAddrsTable(const AbstractState &es, u32_t id) const
whether the memory address stores memory addresses
IntervalValue getTruncValue(const AbstractState &es, const SVFVar *var, const SVFType *dstType)
void handleAddr(AbstractState &es, const AddrStmt *addr)
static z3::context & getContext()
Get z3 context, singleton design here to make sure we only have one context.