decompiler
1.0.0
|
A class that holds a data-type traversal state during type propagation. More...
#include <coreaction.hh>
Public Member Functions | |
PropagationState (Varnode *v) | |
Constructor. More... | |
void | step (void) |
Advance to the next propagation edge. More... | |
bool | valid (void) const |
Return true if there are edges left to iterate. | |
Public Attributes | |
Varnode * | vn |
The root Varnode. | |
list< PcodeOp * >::const_iterator | iter |
Iterator to current descendant being enumerated. | |
PcodeOp * | op |
The current descendant or the defining PcodeOp. | |
int4 | inslot |
Slot holding Varnode for descendant PcodeOp. | |
int4 | slot |
Current edge relative to current PcodeOp. | |
A class that holds a data-type traversal state during type propagation.
For a given Varnode, this class iterates all the possible edges its data-type might propagate through.
ghidra::PropagationState::PropagationState | ( | Varnode * | v | ) |
Constructor.
v | is the root Varnode to iterate over |
References ghidra::Varnode::beginDescend(), ghidra::Varnode::endDescend(), ghidra::Varnode::getDef(), ghidra::PcodeOp::getOut(), and ghidra::PcodeOp::getSlot().
void ghidra::PropagationState::step | ( | void | ) |
Advance to the next propagation edge.
At the high level, this iterates through all the descendant PcodeOps of the root Varnode, then the defining PcodeOp. At the low level, this iterates from the output Varnode of the current PcodeOp then through all the input Varnodes
References ghidra::Varnode::endDescend(), ghidra::Varnode::getDef(), ghidra::PcodeOp::getOut(), and ghidra::PcodeOp::getSlot().
Referenced by ghidra::ActionInferTypes::propagateOneType().