ROSE 0.11.145.147
|
Prevent discontiguous basic blocks.
This basic block callback causes the basic block to terminate when it encounters an unconditional branch, in effect causing all basic blocks to have instructions that are contiguous in memory and ordered by their address. ROSE normally does not require such strict constraints: a basic block is normally one or more distinct instructions having a single entry point and a single exit point and with control flowing linearly across all instructions.
#include <Rose/BinaryAnalysis/Partitioner2/Modules.h>
Public Member Functions | |
virtual bool | operator() (bool chain, const Args &args) override |
Callback method. | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Static Public Member Functions | |
static Ptr | instance () |
Additional Inherited Members | |
Public Types inherited from Rose::BinaryAnalysis::Partitioner2::BasicBlockCallback | |
enum | Termination { CONTINUE_DISCOVERY , TERMINATE_NOW , TERMINATE_PRIOR } |
Whether to terminate a basic block. More... | |
using | Ptr = BasicBlockCallbackPtr |
Shared-ownership pointer to a BasicBlockCallback. | |
|
inlinestatic |
|
overridevirtual |
Callback method.
This is the method invoked for the callback. The chain
argument is the return value from the previous callback in the list (true for the first callback). The successor callbacks use chain
to indicate whether subsequent callbacks should do anything.
Implements Rose::BinaryAnalysis::Partitioner2::BasicBlockCallback.