|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
A trace of a single path out of a BranchPoint. More...
Public Types | |
| enum | { f_active = 1 , f_terminal = 2 } |
Public Member Functions | |
| BlockTrace (BranchPoint *t, int4 po, int4 eo) | |
| Construct given a parent BranchPoint and path index. | |
| BlockTrace (BranchPoint *root, int4 po, FlowBlock *bl) | |
| Construct a root BlockTrace. | |
| bool | isActive (void) const |
| Return true if this is active. | |
| bool | isTerminal (void) const |
| Return true is this terminates. | |
Public Attributes | |
| uint4 | flags |
| Properties of the BlockTrace. | |
| BranchPoint * | top |
| Parent BranchPoint for which this is a path. | |
| int4 | pathout |
| Index of the out-edge for this path (relative to the parent BranchPoint) | |
| FlowBlock * | bottom |
| Current node being traversed along 1 path from decision point. | |
| FlowBlock * | destnode |
| Next FlowBlock node this BlockTrace will try to push into. | |
| int4 | edgelump |
| If >1, edge to destnode is "virtual" representing multiple edges coming together. | |
| list< BlockTrace * >::iterator | activeiter |
| Position of this in the active trace list. | |
| BranchPoint * | derivedbp |
| BranchPoint blocker this traces into. | |
A trace of a single path out of a BranchPoint.
Once a BranchPoint is retired with 1 outgoing edge, the multiple paths coming out of the BranchPoint are considered a single path for the parent BlockTrace.
| anonymous enum |
| Enumerator | |
|---|---|
| f_active | This BlockTrace is active. |
| f_terminal | All paths from this point exit (without merging back to parent) |
| ghidra::TraceDAG::BlockTrace::BlockTrace | ( | BranchPoint * | t, |
| int4 | po, | ||
| int4 | eo | ||
| ) |
Construct given a parent BranchPoint and path index.
| t | is the parent BranchPoint |
| po | is the index of the formal path out of the BranchPoint to this |
| eo | is the edge index out of the BranchPoints root FlowBlock |
References ghidra::FlowBlock::getOut(), and ghidra::TraceDAG::BranchPoint::top.
| ghidra::TraceDAG::BlockTrace::BlockTrace | ( | BranchPoint * | root, |
| int4 | po, | ||
| FlowBlock * | bl | ||
| ) |
Construct a root BlockTrace.
Attach BlockTrace to a virtual root BranchPoint, where there isn't an explicit FlowBlock acting as branch point.
| root | is the virtual BranchPoint |
| po | is the path out the BranchPoint to this |
| bl | is the first FlowBlock along the path |