ROSE 0.11.145.229
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;
44class ReadWriteSets;
45using ReadWriteSetsPtr = std::shared_ptr<ReadWriteSets>;
46using RegisterDescriptors = std::vector<RegisterDescriptor>;
49class RegisterNames;
50class RegisterParts;
51class SerialInput;
53class SerialIo;
55class SerialOutput;
57class SmtlibSolver;
58class SmtSolver;
59using SmtSolverPtr = std::shared_ptr<SmtSolver>;
60class SourceLocations;
61class SRecord;
62class SymbolicExpresssionParser;
63class SystemCall;
64class TaintedFlow;
65class VxworksTerminal;
66using VxworksTerminalPtr = std::shared_ptr<VxworksTerminal>;
67class Z3Solver;
68
69namespace PointerDetection {
70class Analysis;
72class Settings;
73} // namespace
74
75namespace ReturnValueUsed {
76class Analysis;
77class CallSiteResults;
78} // namespace
79
80namespace StackDelta {
81class Analysis;
83} // namespace
84
104
105namespace SymbolicExpression {
106class Exception;
107class ExprExprHashMap;
108class Formatter;
109class Interior;
111class Leaf;
113class Node;
115class Simplifier;
116class Type;
117class Visitor;
118} // namespace
120
121} // namespace
122} // namespace
123
124#endif
125
126// #include's for sub-namespaces and sub-directories
127#include <Rose/BinaryAnalysis/Architecture/BasicTypes.h>
128#include <Rose/BinaryAnalysis/CallingConvention/BasicTypes.h>
129#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
130#include <Rose/BinaryAnalysis/Debugger/BasicTypes.h>
131#include <Rose/BinaryAnalysis/Disassembler/BasicTypes.h>
132#include <Rose/BinaryAnalysis/Dwarf/BasicTypes.h>
133#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
134#include <Rose/BinaryAnalysis/ModelChecker/BasicTypes.h>
135#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h>
136#include <Rose/BinaryAnalysis/Variables/BasicTypes.h>
137
138#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:24
An efficient mapping from an address space to stored data.
Definition MemoryMap.h:119
Analysis that looks for no-op equivalents.
Definition NoOperation.h:14
Settings to control the pointer analysis.
Analysis that computes reachability of CFG vertices.
Sets of variables based on whether they're read or written.
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:422
Base class for binary state input and output.
Definition SerialIo.h:95
Output binary analysis state.
Definition SerialIo.h:251
Interface to Satisfiability Modulo Theory (SMT) solvers.
Definition SmtSolver.h:43
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
Connection to a VxWorks terminal.
Interface to the Z3 SMT solver.
Definition Z3Solver.h:35
void initNamespace()
Initialize this namespace.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
std::shared_ptr< ReadWriteSets > ReadWriteSetsPtr
Reference counting pointer.
std::shared_ptr< SmtSolver > SmtSolverPtr
Reference counting pointer.
std::shared_ptr< VxworksTerminal > VxworksTerminalPtr
Reference counting pointer.
std::vector< RegisterDescriptor > RegisterDescriptors
List of register descriptors in dictionary.
The ROSE library.