18#include "llvm/ADT/StringExtras.h"
85 bool _isLocal,
bool _isGlobal,
bool _isFixed,
86 const llvm::Value *_allocSite,
127 return EqExpr::create(offset,
135 return UltExpr::create(offset,
227 void write8(
unsigned offset, uint8_t value);
228 void write16(
unsigned offset, uint16_t value);
229 void write32(
unsigned offset, uint32_t value);
230 void write64(
unsigned offset, uint64_t value);
252 unsigned *size_r)
const;
Provides an interface for creating and destroying Array objects.
static ref< ConstantExpr > create(uint64_t v, Width w)
static ref< ConstantExpr > alloc(const llvm::APInt &v)
static const Context & get()
get - Return the global singleton instance of the Context.
ExecutionState representing a path under exploration.
Class representing symbolic expressions.
unsigned Width
The type of an expression is simply its width, in bits.
void setName(std::string name) const
class ReferenceCounter _refCount
Required by klee::ref-managed objects.
ref< Expr > getBoundsCheckOffset(ref< Expr > offset) const
unsigned size
size in bytes
ref< Expr > getBoundsCheckOffset(ref< Expr > offset, unsigned bytes) const
void getAllocInfo(std::string &result) const
Get an identifying string for this allocation.
MemoryObject(const MemoryObject &b)
ref< Expr > getBoundsCheckPointer(ref< Expr > pointer, unsigned bytes) const
ref< ConstantExpr > getSizeExpr() const
int compare(const MemoryObject &b) const
MemoryObject(uint64_t _address, unsigned _size, bool _isLocal, bool _isGlobal, bool _isFixed, const llvm::Value *_allocSite, MemoryManager *_parent)
MemoryObject & operator=(const MemoryObject &b)
ref< Expr > getBoundsCheckPointer(ref< Expr > pointer) const
ref< Expr > getOffsetExpr(ref< Expr > pointer) const
const llvm::Value * allocSite
ref< ConstantExpr > getBaseExpr() const
MemoryObject(uint64_t _address)
ref< Expr > read8(unsigned offset) const
void initializeToZero()
Make contents all concrete and zero.
ref< Expr > read(ref< Expr > offset, Expr::Width width) const
void flushRangeForRead(unsigned rangeBase, unsigned rangeSize) const
void markByteConcrete(unsigned offset)
void write64(unsigned offset, uint64_t value)
ref< const MemoryObject > object
void write8(unsigned offset, uint8_t value)
ArrayCache * getArrayCache() const
void initializeToRandom()
Make contents all concrete and random.
void setKnownSymbolic(unsigned offset, Expr *value)
const UpdateList & getUpdates() const
class ReferenceCounter _refCount
Required by klee::ref-managed objects.
void write16(unsigned offset, uint16_t value)
void flushRangeForWrite(unsigned rangeBase, unsigned rangeSize)
void markByteFlushed(unsigned offset)
void write(unsigned offset, ref< Expr > value)
void setReadOnly(bool ro)
const MemoryObject * getObject() const
void markByteSymbolic(unsigned offset)
void markByteUnflushed(unsigned offset)
unsigned copyOnWriteOwner
bool isByteConcrete(unsigned offset) const
isByteConcrete ==> !isByteKnownSymbolic
void fastRangeCheckOffset(ref< Expr > offset, unsigned *base_r, unsigned *size_r) const
void write32(unsigned offset, uint32_t value)
uint8_t * concreteStore
Holds all known concrete bytes.
bool isByteUnflushed(unsigned offset) const
isByteUnflushed(i) => (isByteConcrete(i) || isByteKnownSymbolic(i))
ObjectState(const MemoryObject *mo)
void flushToConcreteStore(TimingSolver *solver, const ExecutionState &state) const
BitArray * concreteMask
concreteMask[byte] is set if byte is known to be concrete
bool isByteKnownSymbolic(unsigned offset) const
isByteKnownSymbolic ==> !isByteConcrete
ref< Expr > * knownSymbolics
Reference counter to be used as part of a ref-managed struct or class.
Class representing a complete list of updates into an array.