1#ifndef ROSE_BinaryAnalysis_ByteCode_Analysis_H
2#define ROSE_BinaryAnalysis_ByteCode_Analysis_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
6#include <Rose/BinaryAnalysis/Disassembler/BasicTypes.h>
7#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h>
10#include <Rose/BinaryAnalysis/InstructionSemantics/SymbolicSemantics.h>
18namespace BinaryAnalysis {
43 virtual const uint8_t* bytes()
const = 0;
44 virtual size_t size()
const = 0;
45 virtual Address offset()
const = 0;
64 virtual std::string name()
const = 0;
84 virtual std::string name()
const = 0;
85 virtual bool isSystemReserved(
const std::string &name)
const = 0;
87 virtual const Code & code()
const = 0;
92 virtual void annotate() = 0;
95 std::set<Address> targets()
const;
99 const std::vector<BasicBlockPtr>& blocks()
const;
108 std::vector<BasicBlockPtr> blocks_;
123 virtual std::string name()
const = 0;
141 virtual std::string name()
const = 0;
163 virtual std::string name()
const = 0;
164 virtual std::string super_name()
const = 0;
165 virtual std::string typeSeparator()
const = 0;
167 virtual const std::vector<std::string>& strings();
169 const std::vector<Field::Ptr>& fields()
const;
170 const std::vector<Method::Ptr>& methods()
const;
171 const std::vector<Attribute::Ptr>& attributes()
const;
172 const std::vector<Interface::Ptr>& interfaces()
const;
175 std::map<std::string,Address> &discoveredFunctions)
const;
177 virtual void digraph()
const;
178 virtual void dump() = 0;
189 std::vector<Field::Ptr> fields_;
190 std::vector<Method::Ptr> methods_;
191 std::vector<Attribute::Ptr> attributes_;
192 std::vector<Interface::Ptr> interfaces_;
193 std::vector<std::string> strings_;
211 virtual std::string name()
const;
213 std::map<std::string,Address> &discoveredFunctions)
const;
217 const std::vector<ByteCode::Class::Ptr>& classes()
const;
221 std::vector<ByteCode::Class::Ptr> classes_;
237 static Address nextSystemReservedVa();
240 virtual std::string name()
const = 0;
241 virtual bool isSystemReserved(
const std::string &name)
const = 0;
244 const std::vector<Namespace::Ptr>& namespaces()
const;
248 std::vector<Namespace::Ptr> namespaces_;
251 static Address nextSystemReservedVa_;
Base class for ByteCode Attribute.
Base class for ByteCode Class.
Base class for ByteCode Code.
Base class for ByteCode Container.
Base class for ByteCode Fields.
Base class for ByteCode Interface.
Base class for ByteCode Methods.
Base class for ByteCode Namespace.
static Ptr instance()
Allocating constructor.
Creates SharedPointer from this.
Base class for reference counted objects.
Reference-counting intrusive smart pointer.
List of SgAsmInstruction nodes.
Base classes for instruction semantics.
boost::shared_ptr< RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to a RISC operators object.
Binary function detection.
Sawyer::SharedPointer< Partitioner > PartitionerPtr
Shared-ownership pointer for Partitioner.
Sawyer::SharedPointer< BasicBlock > BasicBlockPtr
Shared-ownersip pointer for BasicBlock.
std::uint64_t Address
Address.