CFGEdgeKind Type
CFG edge types. We distinguish CFG edges by classifying them into several different kinds.
Union cases
| Union case |
Description
|
Full Usage:
CallEdge
|
An edge of a regular call instruction. |
Full Usage:
ExceptionFallThroughEdge
|
A fall-through representing C++ exception flows. If there is a function call which can raise an exception, then this edge will be used. |
Full Usage:
ExternalCallEdge
|
An edge of a call instruction to an external function or PLT. |
Full Usage:
ExternalJmpEdge
|
An edge of a jmp instruction to an external function or PLT. |
Full Usage:
FallThroughEdge
|
A simple fall-through case. This type is created when an edge cuts in two consecutive instructions. |
Full Usage:
ImplicitCallEdge
|
An implicit edge that is not explicitly visible from the current CALL instruction, but visible within the function. If there is a path in the callee that calls a function, then we create an implicit edge from a caller to any of the callees. |
Full Usage:
IndirectCallEdge
|
An edge from an indirect call instruction. |
Full Usage:
IndirectJmpEdge
|
An edge from an indirect jmp instruction. |
Full Usage:
InterCJmpFalseEdge
|
An edge of a conditional jump that is exercised when the condition is false. |
Full Usage:
InterCJmpTrueEdge
|
An edge of a conditional jump that is exercised when the condition is true. |
Full Usage:
InterJmpEdge
|
An edge of a direct jump, e.g., JMP +0x42. |
Full Usage:
IntraCJmpFalseEdge
|
A false conditional edge only visible from an IR-level CFG, because there is a control-flow inside a machine instruction. |
Full Usage:
IntraCJmpTrueEdge
|
A true conditional edge only visible from an IR-level CFG, because there is a control-flow inside a machine instruction. |
Full Usage:
IntraJmpEdge
|
A direct jump edge only visible from an IR-level CFG, because there is a control-flow inside a machine instruction. |
Full Usage:
NoReturnFallThroughEdge
|
A fall-through after a no-return call instruction. This edge will never be executed. We have this edge to include all "codes" compiler emitted. If we do not consider such "unreachable" codes from CFG building, we'll never see this edge in the result CFG. |
Full Usage:
RecursiveCallEdge
|
An edge of a recursive call instruction. |
Full Usage:
RetEdge
|
An edge of a function return. |
Full Usage:
TailCallEdge
|
An edge of a tail-call instruction. |
Full Usage:
UnknownEdge
|
Unknown edge type. This should be an error case. |
Instance members
| Instance member |
Description
|
Full Usage:
this.IsCallEdge
Returns: bool
|
|
Full Usage:
this.IsExceptionFallThroughEdge
Returns: bool
|
|
Full Usage:
this.IsExternalCallEdge
Returns: bool
|
|
Full Usage:
this.IsExternalJmpEdge
Returns: bool
|
|
Full Usage:
this.IsFallThroughEdge
Returns: bool
|
|
Full Usage:
this.IsImplicitCallEdge
Returns: bool
|
|
Full Usage:
this.IsIndirectCallEdge
Returns: bool
|
|
Full Usage:
this.IsIndirectJmpEdge
Returns: bool
|
|
Full Usage:
this.IsInterCJmpFalseEdge
Returns: bool
|
|
Full Usage:
this.IsInterCJmpTrueEdge
Returns: bool
|
|
Full Usage:
this.IsInterJmpEdge
Returns: bool
|
|
Full Usage:
this.IsIntraCJmpFalseEdge
Returns: bool
|
|
Full Usage:
this.IsIntraCJmpTrueEdge
Returns: bool
|
|
Full Usage:
this.IsIntraJmpEdge
Returns: bool
|
|
Full Usage:
this.IsNoReturnFallThroughEdge
Returns: bool
|
|
Full Usage:
this.IsRecursiveCallEdge
Returns: bool
|
|
Full Usage:
this.IsRetEdge
Returns: bool
|
|
Full Usage:
this.IsTailCallEdge
Returns: bool
|
|
Full Usage:
this.IsUnknownEdge
Returns: bool
|
|
B2R2