ROSE 0.11.145.192
Public Attributes | List of all members
Rose::BinaryAnalysis::Partitioner2::BasePartitionerSettings Struct Reference

Description

Settings that directly control a partitioner.

These settings are specific to a Partitioner object.

Definition at line 326 of file Rose/BinaryAnalysis/Partitioner2/BasicTypes.h.

#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h>

Public Attributes

bool usingSemantics = false
 Whether instruction semantics are used.
 
bool checkingCallBranch = false
 Whether to look for function calls used as branches.
 
bool basicBlockSemanticsAutoDrop = true
 Whether to automatically drop semantics for attached basic blocks.
 
bool ignoringUnknownInsns = false
 Whether unknown instructions are ignored.
 

Member Data Documentation

◆ usingSemantics

bool Rose::BinaryAnalysis::Partitioner2::BasePartitionerSettings::usingSemantics = false

Whether instruction semantics are used.

If semantics are used, then the partitioner will have more accurate reasoning about the control flow graph. For instance, semantics enable the detection of certain kinds of opaque predicates.

Definition at line 331 of file Rose/BinaryAnalysis/Partitioner2/BasicTypes.h.

◆ checkingCallBranch

bool Rose::BinaryAnalysis::Partitioner2::BasePartitionerSettings::checkingCallBranch = false

Whether to look for function calls used as branches.

If this property is set, then function call instructions are not automatically assumed to be actual function calls.

Definition at line 336 of file Rose/BinaryAnalysis/Partitioner2/BasicTypes.h.

◆ basicBlockSemanticsAutoDrop

bool Rose::BinaryAnalysis::Partitioner2::BasePartitionerSettings::basicBlockSemanticsAutoDrop = true

Whether to automatically drop semantics for attached basic blocks.

Basic blocks normally cache their semantic state as they're being discovered so that the state does not need to be recomputed from the beginning of the block each time a new instruction is appended. However, caching this information can consume a large number of symbolic expression nodes which are seldom needed once the basic block is fully discovered. Therefore, setting this property to true will cause a basic block's semantic information to be forgotten as soon as the basic block is attached to the CFG.

See also
Partitioner::basicBlockDropSemantics

Definition at line 347 of file Rose/BinaryAnalysis/Partitioner2/BasicTypes.h.

◆ ignoringUnknownInsns

bool Rose::BinaryAnalysis::Partitioner2::BasePartitionerSettings::ignoringUnknownInsns = false

Whether unknown instructions are ignored.

If set, then instructions that cannot be disassembled are treated like no-ops for the purpose of building the global control flow graph (otherwise they terminate a basic block). This is useful when working with fixed-width instruction set architectures for which ROSE has an incomplete disassembler. For instance, PowerPC architectures that are augmented with additional undocumented co-processor instructions.

Definition at line 355 of file Rose/BinaryAnalysis/Partitioner2/BasicTypes.h.


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