ROSE 0.11.145.147
|
Controls state merge operations.
This is the base class for objects that control the details of merge operations. A merge of two semantic values or semantic states happens when control flow joins together in data-flow analysis, and perhaps other operations. An optional Merger object is passed as an argument into the merge functions and contains settings and other details that might be necessary during the merge operation.
The base classes for register state and memory state allow an optional Merger object to be stored in the state. Whenever a state is copied, its merger object pointer is also copied (shallow copy of merger). The merger object is passed as an argument to each call of SValue::createMerged or SValue::createOptionalMerge. The user-defined versions of these functions can access the merger object to decide how to merge. For example, the symbolic domain defines a merger that controls whether merging two different semantic values results in bottom or a set containing both values.
Merger objects are allocated on the heap and have shared ownership like most other instruction semantics objects. Therefore they have no public C++ constructors but instead use factory methods named "instance". Users should not explicitly delete these objects – they will be deleted automatically.
#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/Merger.h>
Public Types | |
typedef MergerPtr | Ptr |
Shared ownership pointer for Merger. | |
Public Member Functions | |
bool | memoryAddressesMayAlias () const |
Whether memory addresses can alias one another. | |
void | memoryAddressesMayAlias (bool b) |
Whether memory addresses can alias one another. | |
bool | memoryMergeDebugging () const |
Turn on output for memory merge debugging. | |
void | memoryMergeDebugging (bool b) |
Turn on output for memory merge debugging. | |
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 () |
Allocating constructor. | |
|
inline |
|
inline |
|
inline |
Turn on output for memory merge debugging.
If set and the Rose::BinaryAnalysis::InstructionSemantics
diagnostic stream is also enabled, then memory merge operations produce debugging diagnostics to that stream. Memory merge debugging is not normally enabled even if the stream is enabled because it can produce a very large amount of output.
|
inline |
Turn on output for memory merge debugging.
If set and the Rose::BinaryAnalysis::InstructionSemantics
diagnostic stream is also enabled, then memory merge operations produce debugging diagnostics to that stream. Memory merge debugging is not normally enabled even if the stream is enabled because it can produce a very large amount of output.