ROSE 0.11.145.277
|
Basic block callback to detect "switch" statements.
Examines the instructions of a basic block to determine if they are from a C "switch"-like statement and attempts to find the "case" labels, adding them as successors to this basic block.
Since this is called during partitioning, we don't have a full CFG or even full basic blocks. Therefore, the analysis it performs is restricted to the current (partial) basic block.
Definition at line 123 of file ModulesX86.h.
#include <Rose/BinaryAnalysis/Partitioner2/ModulesX86.h>
Public Member Functions | |
virtual bool | operator() (bool chain, const Args &) override |
Callback method. | |
void | addToPartitioner (const Args &, const std::set< Address > &successors) const |
![]() | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Static Public Member Functions | |
static Ptr | instance () |
Allocating constructor. | |
Additional Inherited Members | |
![]() | |
enum | Termination { CONTINUE_DISCOVERY , TERMINATE_NOW , TERMINATE_PRIOR } |
Whether to terminate a basic block. More... | |
using | Ptr = BasicBlockCallbackPtr |
Shared-ownership pointer to a BasicBlockCallback. | |
|
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.