|
ROSE 0.11.145.354
|
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< 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. | |
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< Address > 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.