ROSE  0.11.145.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 29 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 BasicBlockPtr &, const FunctionPtr &parentFunction, size_t inliningId)
 Construct a basic block vertex. More...
 
 DfCfgVertex (const FunctionPtr &function, const FunctionPtr &parentFunction, size_t inliningId)
 Construct a faked call vertex. More...
 
 DfCfgVertex (Type type, const FunctionPtr &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 BasicBlockPtrbblock () const
 Basic block. More...
 
const FunctionPtrcallee () const
 Function represented by faked call. More...
 
FunctionPtr 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...
 
void print (std::ostream &) const
 Print a short description of this vertex. More...
 
std::string toString () const
 Single-line description of this 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 32 of file Partitioner2/DataFlow.h.

Constructor & Destructor Documentation

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const BasicBlockPtr ,
const FunctionPtr parentFunction,
size_t  inliningId 
)

Construct a basic block vertex.

The basic block pointer should not be a null pointer.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( const FunctionPtr function,
const FunctionPtr parentFunction,
size_t  inliningId 
)

Construct a faked call vertex.

The function may be null if indeterminate.

Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::DfCfgVertex ( Type  type,
const FunctionPtr parentFunction,
size_t  inliningId 
)

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

Member Function Documentation

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

Type of the vertex.

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

const BasicBlockPtr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::bblock ( ) const

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.

const FunctionPtr& Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::callee ( ) const

Function represented by faked call.

FunctionPtr Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::parentFunction ( ) const

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.

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

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.

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

Virtual address of vertex.

Returns the virtual address if known, otherwise nothing.

void Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::print ( std::ostream &  ) const

Print a short description of this vertex.

The description is a single-line string with no line termination.

std::string Rose::BinaryAnalysis::Partitioner2::DataFlow::DfCfgVertex::toString ( ) const

Single-line description of this vertex.

The description is a single-line string with no line termination.


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