ROSE
0.11.82.0
|
Description of a local stack variable within a function.
Definition at line 146 of file Variables.h.
#include <Rose/BinaryAnalysis/Variables.h>
Classes | |
struct | Boundary |
Boundary between stack variables. More... | |
Public Types | |
enum | Purpose { Purpose::RETURN_ADDRESS, Purpose::FRAME_POINTER, Purpose::SPILL_AREA, Purpose::NORMAL, Purpose::UNKNOWN, Purpose::OTHER } |
Purpose of variable. More... | |
using | Boundaries = std::vector< Boundary > |
List of boundaries. More... | |
Public Member Functions | |
StackVariable () | |
Default constructor. More... | |
StackVariable (const Partitioner2::FunctionPtr &, int64_t frameOffset, rose_addr_t maxSizeBytes, Purpose, const AddressSet &definingInstructionVas=AddressSet(), const std::string &name="") | |
Construct a variable descriptor. More... | |
StackVariable (const StackVariable &) | |
const std::string & | setDefaultName () |
Give variable a defult name. More... | |
OffsetInterval | interval () const |
Location within the function stack frame. More... | |
Partitioner2::FunctionPtr | function () const |
Property: Function owning the variable. More... | |
void | function (const Partitioner2::FunctionPtr &) |
Property: Function owning the variable. More... | |
int64_t | frameOffset () const |
Property: Frame offset. More... | |
void | frameOffset (int64_t offset) |
Property: Frame offset. More... | |
Purpose | purpose () const |
Property: Purpose. More... | |
void | purpose (Purpose p) |
Property: Purpose. More... | |
bool | operator== (const StackVariable &other) const |
Compare two local variables. More... | |
bool | operator!= (const StackVariable &other) const |
Compare two local variables. More... | |
void | print (std::ostream &) const |
Printing local variable. | |
std::string | toString () const |
Printing local variable. | |
![]() | |
BaseVariable (const BaseVariable &) | |
rose_addr_t | maxSizeBytes () const |
Property: Maximum variable size in bytes. More... | |
void | maxSizeBytes (rose_addr_t size) |
Property: Maximum variable size in bytes. More... | |
const AddressSet & | definingInstructionVas () const |
Property: Addresses of instructions related to this variable. More... | |
AddressSet & | definingInstructionVas () |
Property: Addresses of instructions related to this variable. More... | |
void | definingInstructionVas (const AddressSet &vas) |
Property: Addresses of instructions related to this variable. More... | |
const InstructionSemantics2::BaseSemantics::InputOutputPropertySet & | ioProperties () const |
Property: I/O properties. More... | |
InstructionSemantics2::BaseSemantics::InputOutputPropertySet & | ioProperties () |
Property: I/O properties. More... | |
void | ioProperties (const InstructionSemantics2::BaseSemantics::InputOutputPropertySet &set) |
Property: I/O properties. More... | |
const std::string & | name () const |
Property: Optional variable name. More... | |
void | name (const std::string &s) |
Property: Optional variable name. More... | |
Static Public Member Functions | |
static Boundary & | insertBoundary (Boundaries &, int64_t frameOffset, rose_addr_t insnVa) |
Insert a new boundary or adjust an existing boundary. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &, const Rose::BinaryAnalysis::Variables::StackVariable &) |
Print local variable descriptor. More... | |
Additional Inherited Members | |
![]() | |
BaseVariable () | |
Default constructor. More... | |
BaseVariable (size_t maxSizeBytes, const AddressSet &definingInstructionVas, const std::string &name) | |
Construct a variable with a given maximum size. More... | |
using Rose::BinaryAnalysis::Variables::StackVariable::Boundaries = std::vector<Boundary> |
List of boundaries.
Definition at line 169 of file Variables.h.
Purpose of variable.
Definition at line 149 of file Variables.h.
Rose::BinaryAnalysis::Variables::StackVariable::StackVariable | ( | ) |
Default constructor.
Creates an invalid (zero-sized) variable descriptor.
Rose::BinaryAnalysis::Variables::StackVariable::StackVariable | ( | const Partitioner2::FunctionPtr & | , |
int64_t | frameOffset, | ||
rose_addr_t | maxSizeBytes, | ||
Purpose | , | ||
const AddressSet & | definingInstructionVas = AddressSet() , |
||
const std::string & | name = "" |
||
) |
Construct a variable descriptor.
Partitioner2::FunctionPtr Rose::BinaryAnalysis::Variables::StackVariable::function | ( | ) | const |
Property: Function owning the variable.
A default constructed object will have a null function pointer. All other objects have a valid function pointer.
void Rose::BinaryAnalysis::Variables::StackVariable::function | ( | const Partitioner2::FunctionPtr & | ) |
Property: Function owning the variable.
A default constructed object will have a null function pointer. All other objects have a valid function pointer.
int64_t Rose::BinaryAnalysis::Variables::StackVariable::frameOffset | ( | ) | const |
Property: Frame offset.
This is the address of the variable relative to the function's start-of-frame. For multi-byte variables, this is the lowest address of the variable. Depending on the architecture, the start-of-frame could be higher or lower than the variable, thus the return value is signed.
void Rose::BinaryAnalysis::Variables::StackVariable::frameOffset | ( | int64_t | offset | ) |
Property: Frame offset.
This is the address of the variable relative to the function's start-of-frame. For multi-byte variables, this is the lowest address of the variable. Depending on the architecture, the start-of-frame could be higher or lower than the variable, thus the return value is signed.
Purpose Rose::BinaryAnalysis::Variables::StackVariable::purpose | ( | ) | const |
Property: Purpose.
Areas of a stack frame serve different purposes. This property describes the purpose.
void Rose::BinaryAnalysis::Variables::StackVariable::purpose | ( | Purpose | p | ) |
Property: Purpose.
Areas of a stack frame serve different purposes. This property describes the purpose.
const std::string& Rose::BinaryAnalysis::Variables::StackVariable::setDefaultName | ( | ) |
Give variable a defult name.
This variable's name is replaced by a generated name and the name is returned.
bool Rose::BinaryAnalysis::Variables::StackVariable::operator== | ( | const StackVariable & | other | ) | const |
Compare two local variables.
Local variables are equal if and only if they belong to the same function, have the same frame offset, and have the same maximum size or both are default constructed.
bool Rose::BinaryAnalysis::Variables::StackVariable::operator!= | ( | const StackVariable & | other | ) | const |
Compare two local variables.
Local variables are equal if and only if they belong to the same function, have the same frame offset, and have the same maximum size or both are default constructed.
OffsetInterval Rose::BinaryAnalysis::Variables::StackVariable::interval | ( | ) | const |
Location within the function stack frame.
|
static |
Insert a new boundary or adjust an existing boundary.
The boundaries are assumed to be unsorted, and if a new boundary is inserted it is inserted at the end of the list.
|
friend |
Print local variable descriptor.