1#ifndef ROSE_BinaryAnalysis_Variables_VariableFinder_H 
    2#define ROSE_BinaryAnalysis_Variables_VariableFinder_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_BINARY_ANALYSIS 
    6#include <Rose/BinaryAnalysis/BasicTypes.h> 
    7#include <Rose/BinaryAnalysis/Variables/GlobalVariable.h> 
    8#include <Rose/BinaryAnalysis/Variables/StackVariable.h> 
   10#include <Sawyer/CommandLine.h> 
   17namespace BinaryAnalysis {
 
Information about a stack frame.
 
std::vector< Boundary > Boundaries
List of boundaries.
 
Analysis to find variable locations.
 
static bool regionIsFullyReadWrite(const Partitioner2::PartitionerConstPtr &, const AddressInterval &)
True if memory region is fully mapped with read and write access.
 
std::set< Address > findConstants(SgAsmInstruction *)
Find constants syntactically in an instruction.
 
VariableFinderPtr Ptr
Shared ownership pointer for VariableFinder.
 
void evict(const Partitioner2::PartitionerConstPtr &)
Removed cached information.
 
StackVariables findStackVariables(const Partitioner2::PartitionerConstPtr &, SgAsmInstruction *)
Find local variables in a function.
 
const Settings & settings() const
Settings for this analysis.
 
Settings & settings()
Settings for this analysis.
 
void removeOutliers(const StackFrame &, StackVariable::Boundaries &sortedBoundaries)
Remove boundaries that are outside a stack frame.
 
std::set< Address > findAddressConstants(const InstructionSemantics::BaseSemantics::MemoryCellStatePtr &)
Find constants in memory.
 
static Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &)
Command-line switches for analysis settings.
 
StackFrame detectFrameAttributes(const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &, StackVariable::Boundaries &)
Figure out attributes describing the stack frame for the specified function.
 
std::set< SymbolicExpression::Ptr > getMemoryAddresses(const InstructionSemantics::BaseSemantics::MemoryCellStatePtr &)
Find addresses in memory state.
 
std::set< Address > findConstants(const SymbolicExpression::Ptr &)
Find address constants in an expression.
 
static Ptr instance(const Settings &settings=Settings())
Allocating constructor.
 
static bool regionContainsInstructions(const Partitioner2::PartitionerConstPtr &, const AddressInterval &)
True if memory region contains any decoded instructions.
 
VariableFinderConstPtr ConstPtr
Shared ownership pointer for VariableFinder.
 
GlobalVariables findGlobalVariables(const Partitioner2::PartitionerConstPtr &)
Find global variables.
 
bool isCached(const Partitioner2::FunctionPtr &)
Test whether local variable information is cached.
 
void evict(const Partitioner2::FunctionPtr &)
Removed cached information.
 
StackVariables findStackVariables(const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &)
Find local variables in a function.
 
AddressToAddresses findGlobalVariableVas(const Partitioner2::PartitionerConstPtr &)
Find global variable addresses.
 
static bool regionIsFullyMapped(const Partitioner2::PartitionerConstPtr &, const AddressInterval &)
True if memory region is fully mapped.
 
A collection of related switch declarations.
 
Base class for machine instructions.
 
boost::shared_ptr< class MemoryCellState > MemoryCellStatePtr
Shared-ownership pointer to a cell-based memory state.
 
std::map< Address, AddressSet > AddressToAddresses
Mapping from addresses to address sets.
 
std::shared_ptr< const VariableFinder > VariableFinderConstPtr
Shared ownership pointer to VariableFinder.
 
std::shared_ptr< VariableFinder > VariableFinderPtr
Shared ownership pointer to VariableFinder.
 
Settings that control this analysis.
 
std::chrono::seconds gvarMethod1MaxTimePerFunction
Max time to spend in Method 1 global variable analysis per function.