ROSE 2.20.0
Loading...
Searching...
No Matches
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.
 
 DfCfgVertex (const FunctionPtr &function, const FunctionPtr &parentFunction, size_t inliningId)
 Construct a faked call vertex.
 
 DfCfgVertex (Type type, const FunctionPtr &parentFunction, size_t inliningId)
 Construct a vertex of specified type that takes no auxiliary data.
 
Type type () const
 Type of the vertex.
 
const BasicBlockPtr & bblock () const
 Basic block.
 
const FunctionPtr & callee () const
 Function represented by faked call.
 
FunctionPtr parentFunction () const
 Function owning this vertex.
 
size_t inliningId () const
 Inlining invocation number.
 
Sawyer::Optional< Address > address () const
 Virtual address of vertex.
 
void print (std::ostream &) const
 Print a short description of this vertex.
 
std::string toString () const
 Single-line description of this vertex.
 

Member Enumeration Documentation

◆ Type

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

◆ DfCfgVertex() [1/2]

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.

◆ DfCfgVertex() [2/2]

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.

Member Function Documentation

◆ type()

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.

◆ bblock()

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.

◆ parentFunction()

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.

◆ inliningId()

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.

◆ address()

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

Virtual address of vertex.

Returns the virtual address if known, otherwise nothing.

◆ print()

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.

◆ toString()

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: