From 9da34f900b1651dfa83ec7e552a287879542691e Mon Sep 17 00:00:00 2001
From: Anna Zaks
SymExpr (symbol) - is meant to represent abstract, but named, symbolic value. - Symbolic values can have constraints associated with them. Symbols represent + is meant to represent abstract, but named, symbolic value. Symbols represent an actual (immutable) value. We might not know what its specific value is, but - we can associate constraints with that value as we analyze a path. + we can associate constraints with that value as we analyze a path. For + example, we might record that the value of a symbol is greater than + 0, etc. +
+
- MemRegion is similar to a symbol. It is used to provide a lexicon of how to describe abstract memory. Regions can layer on top of other regions, providing a layered approach to representing memory. For example, a struct object on the stack might be represented by a VarRegion, but a FieldRegion which is a subregion of the VarRegion could be used to represent the memory associated with a specific field of that object. - So how do we represent symbolic memory regions? That's what SymbolicRegion - is for. It is a MemRegion that has an associated symbol. Since the + So how do we represent symbolic memory regions? That's what + SymbolicRegion + is for. It is a MemRegion that has an associated symbol. Since the symbol is unique and has a unique name; that symbol names the region. -
+ +
Let's see how the analyzer processes the expressions in the following example:
-- 2.40.0