|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
Class for doing normal widening. More...
#include <rangeutil.hh>
Public Member Functions | |
| WidenerFull (void) | |
| Constructor with default iterations. | |
| WidenerFull (int4 wide, int4 full) | |
| Constructor specifying iterations. | |
| 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 | widenIteration |
| The iteration at which widening is attempted. | |
| int4 | fullIteration |
| The iteration at which a full range is produced. | |
Class for doing normal widening.
Widening is attempted at a specific iteration. If a landmark is available, it is used to do a controlled widening, holding the stable range boundary constant. Otherwise a full range is produced. At a later iteration, a full range is produced automatically.
|
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 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 ghidra::ValueSet::getCount(), and widenIteration.
|
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.
References ghidra::CircleRange::contains(), fullIteration, ghidra::ValueSet::getCount(), ghidra::ValueSet::getLandMark(), ghidra::CircleRange::getMin(), ghidra::CircleRange::invert(), ghidra::CircleRange::widen(), and widenIteration.