DCFG
Dynamic Control Flow Graph
 All Classes Functions
Public Member Functions | List of all members
dcfg_api::DCFG_EDGE Class Referenceabstract

Interface to information about an edge between basic blocks and/or special nodes. More...

#include <dcfg_api.H>

Public Member Functions

virtual DCFG_ID get_edge_id () const =0
 Get ID number of edge.
 
virtual DCFG_ID get_source_node_id () const =0
 Get node ID of edge source.
 
virtual DCFG_ID get_target_node_id () const =0
 Get node ID of edge target.
 
virtual UINT64 get_exec_count () const =0
 Get edge count.
 
virtual UINT64 get_exec_count_for_thread (UINT32 thread_id) const =0
 Get edge count per thread.
 
virtual const std::string * get_edge_type () const =0
 Get edge type.
 
virtual bool is_any_branch_type () const =0
 Determine whether this edge is any type of branch.
 
virtual bool is_any_call_type () const =0
 Determine whether this edge is any type of call.
 
virtual bool is_any_return_type () const =0
 Determine whether this edge is any type of return.
 
virtual bool is_any_inter_routine_type () const =0
 Determine whether this edge is any type of call or return or an edge from the start node or to the exit node.
 
virtual bool is_any_bypass_type () const =0
 Determine whether this edge is any type of bypass, which is a "fabricated" edge across call/return pairs, etc.
 
virtual bool is_branch_edge_type () const =0
 Determine whether this edge is a branch edge type.
 
virtual bool is_call_edge_type () const =0
 Determine whether this edge is a call edge type.
 
virtual bool is_return_edge_type () const =0
 Determine whether this edge is a return edge type.
 
virtual bool is_call_bypass_edge_type () const =0
 Determine whether this edge is a call bypass edge type.
 
virtual bool is_conditional_branch_edge_type () const =0
 Determine whether this edge is a conditional branch edge type.
 
virtual bool is_context_bypass_edge_type () const =0
 Determine whether this edge is a context bypass edge type.
 
virtual bool is_context_edge_type () const =0
 Determine whether this edge is a context edge type.
 
virtual bool is_context_return_edge_type () const =0
 Determine whether this edge is a context return edge type.
 
virtual bool is_direct_branch_edge_type () const =0
 Determine whether this edge is a direct branch edge type.
 
virtual bool is_direct_call_edge_type () const =0
 Determine whether this edge is a direct call edge type.
 
virtual bool is_direct_conditional_branch_edge_type () const =0
 Determine whether this edge is a direct conditional branch edge type.
 
virtual bool is_direct_unconditional_branch_edge_type () const =0
 Determine whether this edge is a direct unconditional branch edge type.
 
virtual bool is_entry_edge_type () const =0
 Determine whether this edge is an entry edge type.
 
virtual bool is_excluded_bypass_edge_type () const =0
 Determine whether this edge is an excluded bypass edge type.
 
virtual bool is_exit_edge_type () const =0
 Determine whether this edge is an exit edge type.
 
virtual bool is_fall_thru_edge_type () const =0
 Determine whether this edge is a fall thru edge type.
 
virtual bool is_indirect_branch_edge_type () const =0
 Determine whether this edge is an indirect branch edge type.
 
virtual bool is_indirect_call_edge_type () const =0
 Determine whether this edge is an indirect call edge type.
 
virtual bool is_indirect_conditional_branch_edge_type () const =0
 Determine whether this edge is an indirect conditional branch edge type.
 
virtual bool is_indirect_unconditional_branch_edge_type () const =0
 Determine whether this edge is an indirect unconditional branch edge type.
 
virtual bool is_rep_edge_type () const =0
 Determine whether this edge is a rep-prefix edge type.
 
virtual bool is_sys_call_bypass_edge_type () const =0
 Determine whether this edge is a system call bypass edge type.
 
virtual bool is_sys_call_edge_type () const =0
 Determine whether this edge is a system call edge type.
 
virtual bool is_sys_return_edge_type () const =0
 Determine whether this edge is a system return edge type.
 
virtual bool is_unconditional_branch_edge_type () const =0
 Determine whether this edge is an unconditional branch edge type.
 
virtual bool is_unknown_edge_type () const =0
 Determine whether this edge is an unknown edge type.
 

Detailed Description

Interface to information about an edge between basic blocks and/or special nodes.

Member Function Documentation

virtual DCFG_ID dcfg_api::DCFG_EDGE::get_edge_id ( ) const
pure virtual

Get ID number of edge.

Returns
ID number for this edge, unique within a process.
virtual const std::string* dcfg_api::DCFG_EDGE::get_edge_type ( ) const
pure virtual

Get edge type.

Returns
Pointer to string describing edge type per DCFG format documentation or NULL if type data is internally inconsistent (should not happen).
virtual UINT64 dcfg_api::DCFG_EDGE::get_exec_count ( ) const
pure virtual

Get edge count.

Returns
Number of times edge was taken, summed across all threads.
virtual UINT64 dcfg_api::DCFG_EDGE::get_exec_count_for_thread ( UINT32  thread_id) const
pure virtual

Get edge count per thread.

Returns
Number of times edge was taken on given thread.
Parameters
[in]thread_idThread number. Typically, threads are consecutively numbered from zero to DCFG_PROCESS::get_highest_thread_id().
virtual DCFG_ID dcfg_api::DCFG_EDGE::get_source_node_id ( ) const
pure virtual

Get node ID of edge source.

This is the node node the edge is "coming from". Most node IDs correspond to basic-blocks, but they could also be for special nodes. In particular, a source node ID could be the "START" node.

Returns
ID of source node.
virtual DCFG_ID dcfg_api::DCFG_EDGE::get_target_node_id ( ) const
pure virtual

Get node ID of edge target.

This is the node node the edge is "going to". Most node IDs correspond to basic-blocks, but they could also be for special nodes. In particular, a source node ID could be the "START" node.

Returns
ID of target node.
virtual bool dcfg_api::DCFG_EDGE::is_any_branch_type ( ) const
pure virtual

Determine whether this edge is any type of branch.

Returns
true if branch, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_any_bypass_type ( ) const
pure virtual

Determine whether this edge is any type of bypass, which is a "fabricated" edge across call/return pairs, etc.

See the DCFG documentation for more information on bypasses.

Returns
true if bypass, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_any_call_type ( ) const
pure virtual

Determine whether this edge is any type of call.

This includes routine calls, system calls, etc.

Returns
true if call, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_any_inter_routine_type ( ) const
pure virtual

Determine whether this edge is any type of call or return or an edge from the start node or to the exit node.

Returns
true if inter-routine, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_any_return_type ( ) const
pure virtual

Determine whether this edge is any type of return.

This includes routine returns, system returns, etc.

Returns
true if return, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_branch_edge_type ( ) const
pure virtual

Determine whether this edge is a branch edge type.

Returns
true if branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_call_bypass_edge_type ( ) const
pure virtual

Determine whether this edge is a call bypass edge type.

Returns
true if call bypass edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_call_edge_type ( ) const
pure virtual

Determine whether this edge is a call edge type.

Returns
true if call edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_conditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is a conditional branch edge type.

Returns
true if conditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_context_bypass_edge_type ( ) const
pure virtual

Determine whether this edge is a context bypass edge type.

Returns
true if context bypass edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_context_edge_type ( ) const
pure virtual

Determine whether this edge is a context edge type.

Returns
true if context edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_context_return_edge_type ( ) const
pure virtual

Determine whether this edge is a context return edge type.

Returns
true if context return edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_direct_branch_edge_type ( ) const
pure virtual

Determine whether this edge is a direct branch edge type.

Returns
true if direct branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_direct_call_edge_type ( ) const
pure virtual

Determine whether this edge is a direct call edge type.

Returns
true if direct call edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_direct_conditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is a direct conditional branch edge type.

Returns
true if direct conditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_direct_unconditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is a direct unconditional branch edge type.

Returns
true if direct unconditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_entry_edge_type ( ) const
pure virtual

Determine whether this edge is an entry edge type.

Returns
true if entry edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_excluded_bypass_edge_type ( ) const
pure virtual

Determine whether this edge is an excluded bypass edge type.

Returns
true if excluded bypass edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_exit_edge_type ( ) const
pure virtual

Determine whether this edge is an exit edge type.

Returns
true if exit edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_fall_thru_edge_type ( ) const
pure virtual

Determine whether this edge is a fall thru edge type.

Returns
true if fall thru edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_indirect_branch_edge_type ( ) const
pure virtual

Determine whether this edge is an indirect branch edge type.

Returns
true if indirect branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_indirect_call_edge_type ( ) const
pure virtual

Determine whether this edge is an indirect call edge type.

Returns
true if indirect call edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_indirect_conditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is an indirect conditional branch edge type.

Returns
true if indirect conditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_indirect_unconditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is an indirect unconditional branch edge type.

Returns
true if indirect unconditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_rep_edge_type ( ) const
pure virtual

Determine whether this edge is a rep-prefix edge type.

Returns
true if rep edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_return_edge_type ( ) const
pure virtual

Determine whether this edge is a return edge type.

Returns
true if return edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_sys_call_bypass_edge_type ( ) const
pure virtual

Determine whether this edge is a system call bypass edge type.

Returns
true if sys call bypass edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_sys_call_edge_type ( ) const
pure virtual

Determine whether this edge is a system call edge type.

Returns
true if sys call edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_sys_return_edge_type ( ) const
pure virtual

Determine whether this edge is a system return edge type.

Returns
true if sys return edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_unconditional_branch_edge_type ( ) const
pure virtual

Determine whether this edge is an unconditional branch edge type.

Returns
true if unconditional branch edge, false otherwise.
virtual bool dcfg_api::DCFG_EDGE::is_unknown_edge_type ( ) const
pure virtual

Determine whether this edge is an unknown edge type.

Returns
true if unknown edge, false otherwise.

The documentation for this class was generated from the following file: