ROSE 0.11.145.192
|
CFG vertex for data-flow analysis.
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< rose_addr_t > | 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. | |
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.
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.
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.
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.