|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
Class for freezing value sets at a specific iteration (to accelerate convergence) More...
#include <rangeutil.hh>
Public Member Functions | |
| virtual int4 | determineIterationReset (const ValueSet &valueSet) |
| Upon entering a fresh partition, determine how the given ValueSet count should be reset. | |
| virtual bool | checkFreeze (const ValueSet &valueSet) |
| Check if the given value set has been frozen for the remainder of the iteration process. | |
| virtual bool | doWidening (const ValueSet &valueSet, CircleRange &range, const CircleRange &newRange) |
| For an iteration that isn't stabilizing attempt to widen the given ValueSet. | |
Public Member Functions inherited from ghidra::Widener | |
| virtual | ~Widener (void) |
| Destructor. | |
Private Attributes | |
| int4 | freezeIteration |
| The iteration at which all change ceases. | |
Class for freezing value sets at a specific iteration (to accelerate convergence)
The value sets don't reach a true stable state but instead lock in a description of the first few values that reach a given Varnode. The ValueSetSolver does normal iteration, but individual ValueSets freeze after a specific number of iterations (3 by default), instead of growing to a true stable state. This gives evidence of iteration in the underlying code, showing the initial value and frequently the step size.
|
virtual |
Check if the given value set has been frozen for the remainder of the iteration process.
| valueSet | is the given value set |
Implements ghidra::Widener.
References freezeIteration, ghidra::ValueSet::getCount(), ghidra::ValueSet::getRange(), and ghidra::CircleRange::isFull().
|
virtual |
Upon entering a fresh partition, determine how the given ValueSet count should be reset.
| valueSet | is the given value set |
Implements ghidra::Widener.
References freezeIteration, and ghidra::ValueSet::getCount().
|
virtual |
For an iteration that isn't stabilizing attempt to widen the given ValueSet.
Change the given range based on its previous iteration so that it stabilizes more rapidly on future iterations.
| valueSet | is the given value set |
| range | is the previous form of the given range (and storage for the widening result) |
| newRange | is the current iteration of the given range |
Implements ghidra::Widener.