ROSE 0.11.145.147
Public Member Functions | Static Public Member Functions | List of all members
Rose::BinaryAnalysis::Partitioner2::Modules::AddGhostSuccessors Class Reference

Description

Follow basic block ghost edges.

If this callback is registered as a partitioner basic block callback then the partitioner will follow ghost edges when discovering instructions for basic blocks. A ghost edge is a control flow edge whose target address is mentioned in the machine instruction but which is never followed. Examples are branch instructions with opaque predicates due to the compiler not optimizing away the branch.

An alternative to following ghost edges as basic block instructions are discovered is to look for dead code after the function is discovered. That way the CFG does not contain edges into the dead code, which can make things like data flow analysis faster.

Definition at line 181 of file Modules.h.

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

Inheritance diagram for Rose::BinaryAnalysis::Partitioner2::Modules::AddGhostSuccessors:
Inheritance graph
[legend]
Collaboration diagram for Rose::BinaryAnalysis::Partitioner2::Modules::AddGhostSuccessors:
Collaboration graph
[legend]

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.
 
SharedObjectoperator= (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.
 

Member Function Documentation

◆ instance()

static Ptr Rose::BinaryAnalysis::Partitioner2::Modules::AddGhostSuccessors::instance ( )
inlinestatic

Definition at line 183 of file Modules.h.

◆ operator()()

virtual bool Rose::BinaryAnalysis::Partitioner2::Modules::AddGhostSuccessors::operator() ( bool  chain,
const Args  
)
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.


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