ROSE 0.11.145.147
MemoryInput.h
1#ifndef ROSE_BinaryAnalysis_Concolic_Callback_MemoryInput_H
2#define ROSE_BinaryAnalysis_Concolic_Callback_MemoryInput_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
5#include <Rose/BinaryAnalysis/Concolic/SharedMemory.h>
6
7#include <Rose/BinaryAnalysis/ByteOrder.h>
8#include <Rose/BinaryAnalysis/SymbolicExpression.h>
9
10#include <Sawyer/IntervalMap.h>
11
12namespace Rose {
13namespace BinaryAnalysis {
14namespace Concolic {
15namespace Callback {
16
21class MemoryInput: public SharedMemoryCallback {
22private:
24 ByteMap previousReads_;
25 ByteOrder::Endianness byteOrder_;
26
27public:
29 using Ptr = MemoryInputPtr;
30
31protected:
32 MemoryInput(const std::string &name); // for factories
33 MemoryInput(const AddressInterval &where, const std::string &name, ByteOrder::Endianness);
34public:
35 ~MemoryInput();
36
37public:
39 static Ptr instance(const AddressInterval &where, ByteOrder::Endianness = ByteOrder::ORDER_UNSPECIFIED);
40
42 static Ptr factory();
43
49 ByteOrder::Endianness byteOrder() const;
50 void byteOrder(ByteOrder::Endianness);
53public:
54 virtual SharedMemoryCallbackPtr instanceFromFactory(const AddressInterval&, const Yaml::Node &config) const override;
55 virtual void handlePreSharedMemory(SharedMemoryContext&) override;
56 virtual void playback(SharedMemoryContext&) override;
57};
58
59} // namespace
60} // namespace
61} // namespace
62} // namespace
63
64#endif
65#endif
An associative container whose keys are non-overlapping intervals.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.