ROSE  0.11.109.0
Public Types | Public Member Functions | List of all members
Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex Class Reference

Description

CFG vertex for data-flow analysis.

See also
DfCfg

Definition at line 26 of file Partitioner2/DataFlow.h.

#include <Rose/BinaryAnalysis/Partitioner2/DataFlow.h>

Public Types

enum  Type {
  BBLOCK,
  FAKED_CALL,
  FUNCRET,
  INDET
}
 Vertex type. More...
 

Public Member Functions

 DfCfgVertex (const BasicBlock::Ptr &bblock, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a basic block vertex. More...
 
 DfCfgVertex (const Function::Ptr &function, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a faked call vertex. More...
 
 DfCfgVertex (Type type, const Function::Ptr &parentFunction, size_t inliningId)
 Construct a vertex of specified type that takes no auxiliary data. More...
 
Type type () const
 Type of the vertex. More...
 
const BasicBlock::Ptrbblock () const
 Basic block. More...
 
const Function::Ptrcallee () const
 Function represented by faked call. More...
 
Function::Ptr parentFunction () const
 Function owning this vertex. More...
 
size_t inliningId () const
 Inlining invocation number. More...
 
Sawyer::Optional< rose_addr_t > address () const
 Virtual address of vertex. More...
 

Member Enumeration Documentation

Vertex type.

Enumerator
BBLOCK 

Vertex represents a basic block.

FAKED_CALL 

Represents a whole called function.

FUNCRET 

Vertex represents returning to the caller.

INDET 

Indeterminate basic block where no information is available.

Definition at line 29 of file Partitioner2/DataFlow.h.

Constructor & Destructor Documentation

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const BasicBlock::Ptr bblock,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a basic block vertex.

The basic block pointer should not be a null pointer.

Definition at line 45 of file Partitioner2/DataFlow.h.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const Function::Ptr function,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a faked call vertex.

The function may be null if indeterminate.

Definition at line 51 of file Partitioner2/DataFlow.h.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( Type  type,
const Function::Ptr parentFunction,
size_t  inliningId 
)
inlineexplicit

Construct a vertex of specified type that takes no auxiliary data.

Definition at line 55 of file Partitioner2/DataFlow.h.

References BBLOCK, and FAKED_CALL.

Member Function Documentation

Type Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::type ( ) const
inline

Type of the vertex.

Vertex types are immutable, defined when the vertex is created. Every vertex has a type.

Definition at line 63 of file Partitioner2/DataFlow.h.

const BasicBlock::Ptr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::bblock ( ) const
inline

Basic block.

The basic block for a vertex is immutable, defined when the vertex is created. Only basic block vertices have a basic block; other vertex types will return a null pointer.

Definition at line 69 of file Partitioner2/DataFlow.h.

const Function::Ptr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::callee ( ) const
inline

Function represented by faked call.

Definition at line 72 of file Partitioner2/DataFlow.h.

Function::Ptr Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::parentFunction ( ) const
inline

Function owning this vertex.

Pointer to the function to which this vertex belongs. For basic blocks, it's a function to which the basic block belongs; for faked calls, its the caller function; for function returns, it's the function returning; for the indeterminate vertex it's a null pointer.

Definition at line 79 of file Partitioner2/DataFlow.h.

size_t Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::inliningId ( ) const
inline

Inlining invocation number.

For a graph constructed for interprocedural data-flow, some function calls are replaced by the called function's body. Each time this inlining happens, a counter is incremented and all new vertices are created using this counter. The counter starts at zero.

Definition at line 86 of file Partitioner2/DataFlow.h.

Sawyer::Optional<rose_addr_t> Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::address ( ) const

Virtual address of vertex.

Returns the virtual address if known, otherwise nothing.


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