ROSE  0.9.9.139
Public Attributes | List of all members
Rose::BinaryAnalysis::Partitioner2::PartitionerSettings Struct Reference

Description

Settings that control the engine partitioning.

These switches are used by the engine to control how it partitions addresses into instructions and static data, instructions into basic blocks, and basic blocks and static data into functions. Some of these settings are copied into a Partitioner object while others affect the Engine directly.

The runtime descriptions and command-line parser for these switches can be obtained from partitionerSwitches.

Definition at line 269 of file BasicTypes.h.

#include <BasicTypes.h>

Collaboration diagram for Rose::BinaryAnalysis::Partitioner2::PartitionerSettings:
Collaboration graph
[legend]

Public Attributes

BasePartitionerSettings base
 
std::vector< rose_addr_t > startingVas
 Addresses at which to start recursive disassembly. More...
 
bool followingGhostEdges
 Should ghost edges be followed during disassembly? A ghost edge is a CFG edge that is apparent from the instruction but which is not taken according to semantics. More...
 
bool discontiguousBlocks
 Should basic blocks be allowed to be discontiguous. More...
 
bool findingFunctionPadding
 Look for padding before each function entry point?
 
bool findingDeadCode
 Look for unreachable basic blocks?
 
rose_addr_t peScramblerDispatcherVa
 Run the PeDescrambler module if non-zero. More...
 
bool findingIntraFunctionCode
 Suck up unused addresses as intra-function code. More...
 
bool findingIntraFunctionData
 Suck up unused addresses as intra-function data. More...
 
bool findingInterFunctionCalls
 Look for function calls between functions. More...
 
AddressInterval interruptVector
 Table of interrupt handling functions. More...
 
bool doingPostAnalysis
 Perform enabled post-partitioning analyses?
 
bool doingPostFunctionMayReturn
 Run function-may-return analysis if doingPostAnalysis is set?
 
bool doingPostFunctionStackDelta
 Run function-stack-delta analysis if doingPostAnalysis is set?
 
bool doingPostCallingConvention
 Run calling-convention analysis if doingPostAnalysis is set?
 
bool doingPostFunctionNoop
 Find and name functions that are effectively no-ops. More...
 
FunctionReturnAnalysis functionReturnAnalysis
 How to run the function may-return analysis. More...
 
bool findingDataFunctionPointers
 Look for function pointers in static data. More...
 
bool findingCodeFunctionPointers
 Look for function pointers in instructions. More...
 
bool findingThunks
 Look for common thunk patterns in undiscovered areas. More...
 
bool splittingThunks
 Split thunks into their own separate functions. More...
 
SemanticMemoryParadigm semanticMemoryParadigm
 Container used for semantic memory states. More...
 
bool namingConstants
 Give names to constants by calling Modules::nameConstants. More...
 
bool namingStrings
 Give labels to constants that are string literal addresses. More...
 
bool demangleNames
 Run all names through a demangling step. More...
 

Member Data Documentation

std::vector<rose_addr_t> Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::startingVas

Addresses at which to start recursive disassembly.

These addresses are in addition to entry addresses, addresses from symbols, addresses from configuration files, etc.

Definition at line 271 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::followingGhostEdges

Should ghost edges be followed during disassembly? A ghost edge is a CFG edge that is apparent from the instruction but which is not taken according to semantics.

For instance, a branch instruction might have two outgoing CFG edges apparent by looking at the instruction syntax, but a semantic analysis might determine that only one of those edges can ever be taken. Thus, the branch has an opaque predicate with one actual edge and one ghost edge.

Definition at line 274 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::discontiguousBlocks

Should basic blocks be allowed to be discontiguous.

If set, then the instructions of a basic block do not need to follow one after the other in memory–the block can have internal unconditional branches.

Definition at line 281 of file BasicTypes.h.

rose_addr_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::peScramblerDispatcherVa

Run the PeDescrambler module if non-zero.

Definition at line 287 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingIntraFunctionCode

Suck up unused addresses as intra-function code.

Definition at line 288 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingIntraFunctionData

Suck up unused addresses as intra-function data.

Definition at line 289 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingInterFunctionCalls

Look for function calls between functions.

Definition at line 290 of file BasicTypes.h.

AddressInterval Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::interruptVector

Table of interrupt handling functions.

Definition at line 291 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::doingPostFunctionNoop

Find and name functions that are effectively no-ops.

Definition at line 296 of file BasicTypes.h.

FunctionReturnAnalysis Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::functionReturnAnalysis

How to run the function may-return analysis.

Definition at line 297 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingDataFunctionPointers

Look for function pointers in static data.

Definition at line 298 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingCodeFunctionPointers

Look for function pointers in instructions.

Definition at line 299 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingThunks

Look for common thunk patterns in undiscovered areas.

Definition at line 300 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::splittingThunks

Split thunks into their own separate functions.

Definition at line 301 of file BasicTypes.h.

SemanticMemoryParadigm Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::semanticMemoryParadigm

Container used for semantic memory states.

Definition at line 302 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingConstants

Give names to constants by calling Modules::nameConstants.

Definition at line 303 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingStrings

Give labels to constants that are string literal addresses.

Definition at line 304 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::demangleNames

Run all names through a demangling step.

Definition at line 305 of file BasicTypes.h.


The documentation for this struct was generated from the following file: