|
ROSE 0.11.145.354
|
Support for binary calling conventions.
This namespace has three main classes and a number of auxiliary classes. The main classes are:
Classes | |
| class | AllocationError |
| Error allocating argument or return value storage. More... | |
| class | Allocator |
| Allocates storage for an argument or return value. More... | |
| class | Analysis |
| Function calling convention. More... | |
| class | Declaration |
| Function declaration. More... | |
| class | Definition |
| Information about calling conventions. More... | |
| class | Exception |
| Error related to calling convention problems. More... | |
| class | ParseError |
| Error occuring when parsing a declaration. More... | |
| class | StoragePoolBase |
| Base class for pool of locations. More... | |
| class | StoragePoolEnumerated |
| A storage pool for explicit locations. More... | |
| class | StoragePoolStack |
| A storage pool for stack-based argument locations. More... | |
| class | TypePredicate |
| Base class for type predicates. More... | |
| class | TypePredicateFunctor |
Typedefs | |
| using | AnalysisPtr = Sawyer::SharedPointer< Analysis > |
| Shared-ownership pointer to Analysis. | |
| using | DeclarationPtr = Sawyer::SharedPointer< Declaration > |
| Shared-ownership pointer to Declaration. | |
| using | DefinitionPtr = Sawyer::SharedPointer< Definition > |
| Shared-ownership pointer for Definition. | |
| using | Dictionary = std::vector< DefinitionPtr > |
| An ordered collection of calling convention definitions. | |
| using | AllocatorPtr = std::shared_ptr< Allocator > |
| Shared-ownership pointer to Allocator. | |
| using | AllocatorConstPtr = std::shared_ptr< const Allocator > |
| Shared-ownership pointer to Allocator. | |
| using | StoragePoolBasePtr = std::shared_ptr< StoragePoolBase > |
| Shared-ownership pointer to StoragePoolBase. | |
| using | StoragePoolBaseConstPtr = std::shared_ptr< const StoragePoolBase > |
| Shared-ownership pointer to StoragePoolBase. | |
| using | StoragePoolEnumeratedPtr = std::shared_ptr< StoragePoolEnumerated > |
| Shared-ownership pointer to StoragePoolEnumerated. | |
| using | StoragePoolEnumeratedConstPtr = std::shared_ptr< const StoragePoolEnumerated > |
| Shared-ownership pointer to StoragePoolEnumerated. | |
| using | StoragePoolStackPtr = std::shared_ptr< StoragePoolStack > |
| Shared-ownership pointer to StoragePoolStack. | |
| using | StoragePoolStackConstPtr = std::shared_ptr< const StoragePoolStack > |
| Shared-ownership pointer to StoragePoolStack. | |
| using | TypePredicatePtr = std::shared_ptr< TypePredicate > |
| Shared-ownership pointer to TypePredicate. | |
| using | TypePredicateConstPtr = std::shared_ptr< const TypePredicate > |
| Shared-ownership pointer to TypePredicate. | |
Enumerations | |
| enum class | StackParameterOrder { LEFT_TO_RIGHT , RIGHT_TO_LEFT , UNSPECIFIED } |
| The order that arguments are pushed onto the stack. More... | |
| enum class | StackDirection { GROWS_UP , GROWS_DOWN } |
| The direction in which the stack grows. More... | |
| enum class | StackCleanup { BY_CALLER , BY_CALLEE , UNSPECIFIED } |
| Who is responsible for popping stack parameters. More... | |
Functions | |
| void | initDiagnostics () |
| Initialize diagnostics. | |
| InstructionSemantics::BaseSemantics::SValuePtr | readArgument (const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, size_t argNumber) |
| Read a function argument from a semantic state. | |
| void | writeArgument (const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, size_t argNumber, const InstructionSemantics::BaseSemantics::SValuePtr &value) |
| Write a function argument to a semantic state. | |
| InstructionSemantics::BaseSemantics::SValuePtr | readReturnValue (const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &) |
| Read the return value that a function is returning. | |
| void | writeReturnValue (const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &, const InstructionSemantics::BaseSemantics::SValuePtr &returnValue) |
| Write a value to a function return semantic state. | |
| void | simulateFunctionReturn (const InstructionSemantics::BaseSemantics::RiscOperatorsPtr &, const DefinitionPtr &) |
| Simulate a function return. | |
| std::ostream & | operator<< (std::ostream &, const Definition &) |
| Print a definition. | |
| std::ostream & | operator<< (std::ostream &, const Analysis &) |
| Print analysis information. | |
| TypePredicate::Ptr | isAnyType () |
| Functor returning true for any non-null type. | |
| TypePredicate::Ptr | isFpNotWiderThan (size_t nBits) |
| Functor returning true for floating-point types not wider than specified. | |
| TypePredicate::Ptr | isIntegerNotWiderThan (size_t nBits) |
| Functor returning true for integer types not wider than specified. | |
| TypePredicate::Ptr | isPointerNotWiderThan (size_t nBits) |
| Functor returning true for pointers not wider than specified. | |
| TypePredicate::Ptr | isNonFpNotWiderThan (size_t nBits) |
| Functor returning true for non-floating-point types not wider than specified. | |
Variables | |
| Sawyer::Message::Facility | mlog |
| Facility for diagnostic output. | |
| using Rose::BinaryAnalysis::CallingConvention::AllocatorPtr = typedef std::shared_ptr<Allocator> |
Shared-ownership pointer to Allocator.
Definition at line 51 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::AllocatorConstPtr = typedef std::shared_ptr<const Allocator> |
Shared-ownership pointer to Allocator.
Definition at line 52 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::AnalysisPtr = typedef Sawyer::SharedPointer<Analysis> |
Shared-ownership pointer to Analysis.
Definition at line 58 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::DeclarationPtr = typedef Sawyer::SharedPointer<Declaration> |
Shared-ownership pointer to Declaration.
Definition at line 63 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::DefinitionPtr = typedef Sawyer::SharedPointer<Definition> |
Shared-ownership pointer for Definition.
Definition at line 68 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::Dictionary = typedef std::vector<DefinitionPtr> |
An ordered collection of calling convention definitions.
Definition at line 71 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolBasePtr = typedef std::shared_ptr<StoragePoolBase> |
Shared-ownership pointer to StoragePoolBase.
Definition at line 78 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolBaseConstPtr = typedef std::shared_ptr<const StoragePoolBase> |
Shared-ownership pointer to StoragePoolBase.
Definition at line 79 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolEnumeratedPtr = typedef std::shared_ptr<StoragePoolEnumerated> |
Shared-ownership pointer to StoragePoolEnumerated.
Definition at line 87 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolEnumeratedConstPtr = typedef std::shared_ptr<const StoragePoolEnumerated> |
Shared-ownership pointer to StoragePoolEnumerated.
Definition at line 88 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolStackPtr = typedef std::shared_ptr<StoragePoolStack> |
Shared-ownership pointer to StoragePoolStack.
Definition at line 96 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::StoragePoolStackConstPtr = typedef std::shared_ptr<const StoragePoolStack> |
Shared-ownership pointer to StoragePoolStack.
Definition at line 97 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::TypePredicatePtr = typedef std::shared_ptr<TypePredicate> |
Shared-ownership pointer to TypePredicate.
Definition at line 105 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| using Rose::BinaryAnalysis::CallingConvention::TypePredicateConstPtr = typedef std::shared_ptr<const TypePredicate> |
Shared-ownership pointer to TypePredicate.
Definition at line 106 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
|
strong |
The order that arguments are pushed onto the stack.
Definition at line 27 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
|
strong |
The direction in which the stack grows.
| Enumerator | |
|---|---|
| GROWS_UP | A push increments the stack pointer. |
| GROWS_DOWN | A push decrements the stack pointer. |
Definition at line 34 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
|
strong |
Who is responsible for popping stack parameters.
| Enumerator | |
|---|---|
| BY_CALLER | The caller pops all stack parameters. |
| BY_CALLEE | The called function pops all stack parameters. |
| UNSPECIFIED | Stack parameter cleanup is unknown or unspecified. |
Definition at line 40 of file Rose/BinaryAnalysis/CallingConvention/BasicTypes.h.
| void Rose::BinaryAnalysis::CallingConvention::initDiagnostics | ( | ) |
Initialize diagnostics.
This is normally called as part of ROSE's diagnostics initialization, but it doesn't hurt to call it often.
| void Rose::BinaryAnalysis::CallingConvention::simulateFunctionReturn | ( | const InstructionSemantics::BaseSemantics::RiscOperatorsPtr & | , |
| const DefinitionPtr & | |||
| ) |
Simulate a function return.
The RISC operator's current state is adjusted as if a function with the specified calling convention returned.
|
extern |
Facility for diagnostic output.
The facility can be controlled directly or via ROSE's command-line.