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>
7#include <Rose/BinaryAnalysis/ByteOrder.h>
8#include <Rose/BinaryAnalysis/SymbolicExpression.h>
10#include <Sawyer/IntervalMap.h>
13namespace BinaryAnalysis {
21class MemoryInput:
public SharedMemoryCallback {
24 ByteMap previousReads_;
25 ByteOrder::Endianness byteOrder_;
29 using Ptr = MemoryInputPtr;
32 MemoryInput(
const std::string &name);
33 MemoryInput(
const AddressInterval &where,
const std::string &name, ByteOrder::Endianness);
39 static Ptr instance(
const AddressInterval &where, ByteOrder::Endianness = ByteOrder::ORDER_UNSPECIFIED);
49 ByteOrder::Endianness byteOrder()
const;
50 void byteOrder(ByteOrder::Endianness);
54 virtual SharedMemoryCallbackPtr instanceFromFactory(
const AddressInterval&,
const Yaml::Node &config)
const override;
55 virtual void handlePreSharedMemory(SharedMemoryContext&)
override;
56 virtual void playback(SharedMemoryContext&)
override;
An associative container whose keys are non-overlapping intervals.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.