maat::SymbolicMemEngine class

Dedicated memory engine handling the 'symbolic' memory state resulting from symbolic pointer writes.

❱   Base classes

class Serializable
Virtual interface that serializable classes must implement.

❱   Public functions

void symbolic_ptr_write(const Expr& addr, const Value& val, addr_t addr_min, addr_t addr_max)
Record symbolic pointer write. 'addr_min' and 'addr_max' are the minimal and maximal concrete values that the 'addr' expression can take.

void concrete_ptr_write(Expr addr, const Value& val)
Record concrete pointer write.

auto concrete_ptr_read(Expr addr, int nb_bytes, Expr base) -> Expr
Read from concrete address 'addr'.

auto symbolic_ptr_read(Expr& addr, ValueSet& addr_value_set, int nb_bytes, Expr base) -> Expr
Read from symbolic address 'addr'. 'addr_value_set' is a reference to the set of values that can be taken by 'addr'.

auto contains_symbolic_write(addr_t start, addr_t end) -> bool
Return true if the memory area contains a recorded symbolic write.

auto class_uid() const -> uid_t virtual
Return the class uid (see ClassId enum)

void dump(serial::Serializer&) const virtual
Dump the object contents in a serializer stream.

void load(serial::Deserializer&) virtual
Restore an object from a deserializer stream.

❱   Public variables

bool symptr_force_aligned
If set to true, force symbolic pointers to be aligned with the size of the memory access. This can be used to reduce the set of possible ways memory content is affected by symbolic stores.