ROSE  0.9.10.114
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 299 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...
 
size_t maxBasicBlockSize
 Maximum basic block size. 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...
 
size_t findingIntraFunctionCode
 Suck up unused addresses as intra-function code (number of passes). 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...
 
size_t functionReturnAnalysisMaxSorts
 Number of times functions are sorted before using unsorted lists. 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 namingSyscalls
 Give names (comments) to system calls if possible. More...
 
boost::filesystem::path syscallHeader
 Name of header file containing system call numbers. 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 301 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 304 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 311 of file BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::maxBasicBlockSize

Maximum basic block size.

Number of instructions. 0 => no limit.

Definition at line 315 of file BasicTypes.h.

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

Run the PeDescrambler module if non-zero.

Definition at line 318 of file BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingIntraFunctionCode

Suck up unused addresses as intra-function code (number of passes).

Definition at line 319 of file BasicTypes.h.

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

Suck up unused addresses as intra-function data.

Definition at line 320 of file BasicTypes.h.

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

Look for function calls between functions.

Definition at line 321 of file BasicTypes.h.

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

Table of interrupt handling functions.

Definition at line 322 of file BasicTypes.h.

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

Find and name functions that are effectively no-ops.

Definition at line 327 of file BasicTypes.h.

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

How to run the function may-return analysis.

Definition at line 328 of file BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::functionReturnAnalysisMaxSorts

Number of times functions are sorted before using unsorted lists.

Definition at line 329 of file BasicTypes.h.

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

Look for function pointers in static data.

Definition at line 330 of file BasicTypes.h.

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

Look for function pointers in instructions.

Definition at line 331 of file BasicTypes.h.

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

Look for common thunk patterns in undiscovered areas.

Definition at line 332 of file BasicTypes.h.

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

Split thunks into their own separate functions.

Definition at line 333 of file BasicTypes.h.

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

Container used for semantic memory states.

Definition at line 334 of file BasicTypes.h.

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

Give names to constants by calling Modules::nameConstants.

Definition at line 335 of file BasicTypes.h.

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

Give labels to constants that are string literal addresses.

Definition at line 336 of file BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingSyscalls

Give names (comments) to system calls if possible.

Definition at line 337 of file BasicTypes.h.

boost::filesystem::path Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::syscallHeader

Name of header file containing system call numbers.

Definition at line 338 of file BasicTypes.h.

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

Run all names through a demangling step.

Definition at line 339 of file BasicTypes.h.


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