ROSE 2.1.0
Loading...
Searching...
No Matches
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 <Rose/Exception.h>
10#include <Sawyer/SharedPointer.h>
11#include <memory>
12
13namespace Rose {
14namespace BinaryAnalysis {
15
16// Document definitions, but not forwared declarations.
17
18class AbstractLocation;
19class AsmFunctionIndex;
20class AstHasher;
21class BestMapAddress;
22class BinaryLoader;
24class BinaryLoaderElf;
28class BinaryLoaderPe;
30class BinaryToSource;
31class CodeInserter;
33class DataFlow;
34class Demangler;
35class FeasiblePath;
36class FunctionCall;
38class HotPatch;
39class LibraryIdentification;
40class MagicNumber;
41class MemoryMap;
43class NoOperation;
44class Reachability;
45class ReadWriteSets;
46using ReadWriteSetsPtr = std::shared_ptr<ReadWriteSets>;
47using RegisterDescriptors = std::vector<RegisterDescriptor>;
50class RegisterNames;
51class RegisterParts;
52class SerialInput;
53using SerialInputPtr = std::shared_ptr<SerialInput>;
54class SerialIo;
55using SerialIoPtr = std::shared_ptr<SerialIo>;
56class SerialOutput;
57using SerialOutputPtr = std::shared_ptr<SerialOutput>;
59namespace Serialization {
60
65enum Format {
66 BINARY,
68 TEXT,
70 XML,
72 FLATBUFFERS
74};
75
77enum Savable {
78 NO_OBJECT = 0x00000000,
79 PARTITIONER = 0x00000001,
80 AST = 0x00000002,
81 END_OF_DATA = 0x0000fffe,
82 ERROR = 0x0000ffff,
83 USER_DEFINED = 0x00010000,
84 USER_DEFINED_LAST = 0xffffffff
85};
86
89 public:
91 explicit Exception(const std::string& s) : Rose::Exception(s) {}
92 ~Exception() throw() {}
93};
94
98using ProgressCallback = std::function<void(size_t current, Sawyer::Optional<size_t> total, const std::string& phase)>;
99
100class SerialFrame;
101class FrameRecord;
102
103namespace FlatBuffers {
104class Serializer;
105class Deserializer;
106} // namespace FlatBuffers
107
108} // namespace Serialization
109class SmtlibSolver;
110class SmtSolver;
111using SmtSolverPtr = std::shared_ptr<SmtSolver>;
112class SourceLocations;
113class SRecord;
114class SymbolicExpresssionParser;
115class SystemCall;
116class TaintedFlow;
117class VxworksTerminal;
118using VxworksTerminalPtr = std::shared_ptr<VxworksTerminal>;
119class Z3Solver;
120
121namespace PointerDetection {
122class Analysis;
124class Settings;
125} // namespace PointerDetection
126
127namespace ReturnValueUsed {
128class Analysis;
129class CallSiteResults;
130} // namespace ReturnValueUsed
131
132namespace StackDelta {
133class Analysis;
135} // namespace StackDelta
136
137namespace Strings {
138class AnyCodePoint;
144class EncodedString;
145class Exception;
149class PrintableAscii;
151class StringFinder;
152class TerminatedString;
155} // namespace Strings
156
157namespace SymbolicExpression {
158class Exception;
159class ExprExprHashMap;
160class Formatter;
161class Interior;
163class Leaf;
165class Node;
167class Simplifier;
168class Type;
169class Visitor;
170} // namespace SymbolicExpression
172
173} // namespace BinaryAnalysis
174} // namespace Rose
175
176#endif
177
178// #include's for sub-namespaces and sub-directories
179#include <Rose/BinaryAnalysis/Architecture/BasicTypes.h>
180#include <Rose/BinaryAnalysis/CallingConvention/BasicTypes.h>
181#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
182#include <Rose/BinaryAnalysis/Debugger/BasicTypes.h>
183#include <Rose/BinaryAnalysis/Disassembler/BasicTypes.h>
184#include <Rose/BinaryAnalysis/Dwarf/BasicTypes.h>
185#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
186#include <Rose/BinaryAnalysis/ModelChecker/BasicTypes.h>
187#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h>
188#include <Rose/BinaryAnalysis/Variables/BasicTypes.h>
189
190#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:71
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:430
Extension of the base SerialIo class defined in BasicTypes.h.
Definition SerialIo.h:95
Output binary analysis state.
Definition SerialIo.h:291
Exception(const std::string &s)
Construct an exception with an error message.
Bidirectional mapping between addresses and source locations.
Defines mapping between code points and code values.
Definition String.h:413
Defines the mapping between code values and octets.
Definition String.h:534
Errors for string analysis.
Definition String.h:187
Length-prefixed string encoding scheme.
Definition String.h:833
Encoding for the length of a string.
Definition String.h:611
Analysis to find encoded strings.
Definition String.h:1023
Terminated string encoding scheme.
Definition String.h:905
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
Base class for all ROSE exceptions.
Holds a value or nothing.
Definition Optional.h:54
void initNamespace()
Initialize this namespace.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
std::shared_ptr< SerialInput > SerialInputPtr
Reference counting pointer.
std::shared_ptr< ReadWriteSets > ReadWriteSetsPtr
Reference counting pointer.
std::shared_ptr< SerialOutput > SerialOutputPtr
Reference counting pointer.
std::shared_ptr< SerialIo > SerialIoPtr
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.