angr.utils.doms

class angr.utils.doms.IncrementalDominators

Bases: object

This class allows for incrementally updating dominators and post-dominators for graphs. The graph must only be modified by replacing nodes, not adding nodes or edges.

__init__(graph, start, post=False)
Parameters:
  • graph (DiGraph)

  • post (bool)

init_doms()
Return type:

dict[Any, Any]

init_dfs()
Return type:

dict[Any, set[Any]]

graph_updated(new_node, replaced_nodes, replaced_head)
Parameters:
  • new_node (Any)

  • replaced_nodes (set[Any])

  • replaced_head (Any)

idom(node)

Get the immediate dominator of a given node.

Return type:

Any | None

Parameters:

node (Any)

df(node)

Generate the dominance frontier of a node.

Return type:

set[Any]

Parameters:

node (Any)

dominates(dominator_node, node)

Tests if dominator_node dominates (or post-dominates) node.

Return type:

bool

Parameters:
  • dominator_node (Any)

  • node (Any)