ROSE 0.11.145.147
Rose/BinaryAnalysis/BasicTypes.h
1#ifndef ROSE_BinaryAnalysis_BasicTypes_H
2#define ROSE_BinaryAnalysis_BasicTypes_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
5#include <RoseFirst.h>
6
7// #include's for subdirectories and sub-namespaces are at the end of this header.
8#include <Rose/BinaryAnalysis/RegisterDescriptor.h>
9#include <Sawyer/SharedPointer.h>
10#include <memory>
11
12namespace Rose {
13namespace BinaryAnalysis {
14
15// Document definitions, but not forwared declarations.
16
17class AbstractLocation;
18class AsmFunctionIndex;
19class AstHasher;
20class BestMapAddress;
21class BinaryLoader;
23class BinaryLoaderElf;
27class BinaryLoaderPe;
29class BinaryToSource;
30class CodeInserter;
32class DataFlow;
33class Demangler;
34class FeasiblePath;
35class FunctionCall;
37class HotPatch;
38class LibraryIdentification;
39class MagicNumber;
40class MemoryMap;
42class NoOperation;
43class Reachability;
44using RegisterDescriptors = std::vector<RegisterDescriptor>;
47class RegisterNames;
48class RegisterParts;
49class SerialInput;
51class SerialIo;
53class SerialOutput;
55class SmtlibSolver;
56class SmtSolver;
57using SmtSolverPtr = std::shared_ptr<SmtSolver>;
58class SourceLocations;
59class SRecord;
60class SymbolicExpresssionParser;
61class SystemCall;
62class TaintedFlow;
63class Z3Solver;
64
65namespace PointerDetection {
66class Analysis;
68class Settings;
69} // namespace
70
71namespace ReturnValueUsed {
72class Analysis;
73class CallSiteResults;
74} // namespace
75
76namespace StackDelta {
77class Analysis;
78} // namespace
79
99
100namespace SymbolicExpression {
101class Exception;
102class ExprExprHashMap;
103class Formatter;
104class Interior;
106class Leaf;
108class Node;
110class Simplifier;
111class Type;
112class Visitor;
113} // namespace
115
116namespace Variables {
117class BaseVariable;
118class GlobalVariable;
119class StackFrame;
120class StackVariable;
121class VariableFinder;
123} // namespace
124
125} // namespace
126} // namespace
127
128#endif
129
130// #include's for sub-namespaces and sub-directories
131#include <Rose/BinaryAnalysis/Architecture/BasicTypes.h>
132#include <Rose/BinaryAnalysis/CallingConvention/BasicTypes.h>
133#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
134#include <Rose/BinaryAnalysis/Debugger/BasicTypes.h>
135#include <Rose/BinaryAnalysis/Disassembler/BasicTypes.h>
136#include <Rose/BinaryAnalysis/Dwarf/BasicTypes.h>
137#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
138#include <Rose/BinaryAnalysis/ModelChecker/BasicTypes.h>
139#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h>
140
141#endif
A loader suitable for ELF object files.
Loader for Windows PE files.
Convert binary to low-level C source code.
Definition ToSource.h:22
Insert new code in place of existing instructions.
Various tools for data-flow analysis.
Definition DataFlow.h:72
Demangle mangled names.
Definition Demangler.h:15
Feasible path analysis.
Binary function call analysis.
Analysis to test the similarity of two functions.
Describes how to modify machine state after each instruction.
Definition HotPatch.h:22
An efficient mapping from an address space to stored data.
Definition MemoryMap.h:115
Analysis that looks for no-op equivalents.
Definition NoOperation.h:14
Settings to control the pointer analysis.
Analysis that computes reachability of CFG vertices.
Defines registers available for a particular architecture.
Convert a register descriptor to a name.
Holds a set of registers without regard for register boundaries.
S-Record hexadecimal data formats.
Definition SRecord.h:37
Input binary analysis state.
Definition SerialIo.h:439
Base class for binary state input and output.
Definition SerialIo.h:114
Output binary analysis state.
Definition SerialIo.h:270
Interface to Satisfiability Modulo Theory (SMT) solvers.
Definition SmtSolver.h:39
Wrapper around solvers that speak SMT-LIB.
Bidirectional mapping between addresses and source locations.
Defines mapping between code points and code values.
Definition String.h:221
Defines the mapping between code values and octets.
Definition String.h:334
Errors for string analysis.
Definition String.h:180
Length-prefixed string encoding scheme.
Definition String.h:629
Encoding for the length of a string.
Definition String.h:409
Analysis to find encoded strings.
Definition String.h:806
Terminated string encoding scheme.
Definition String.h:694
Controls formatting of expression trees when printing.
Interior node of an expression tree for instruction semantics.
Leaf node of an expression tree for instruction semantics.
Base class for symbolic expression nodes.
Operator-specific simplification methods.
Base class for visiting nodes during expression traversal.
Analyzes basic blocks to get system call names.
Definition SystemCall.h:22
Various tools for performing tainted flow analysis.
Definition TaintedFlow.h:18
Describes a local or global variable.
Definition Variables.h:73
Description of a global variable.
Definition Variables.h:302
Information about a stack frame.
Definition Variables.h:441
Description of a local stack variable within a function.
Definition Variables.h:153
Analysis to find variable locations.
Definition Variables.h:461
Interface to the Z3 SMT solver.
Definition Z3Solver.h:33
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
std::shared_ptr< SmtSolver > SmtSolverPtr
Reference counting pointer.
std::vector< RegisterDescriptor > RegisterDescriptors
List of register descriptors in dictionary.
The ROSE library.