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.