1#ifndef ROSE_BinaryAnalysis_Concolic_SystemCall_H
2#define ROSE_BinaryAnalysis_Concolic_SystemCall_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
6#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
7#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
8#include <Rose/BinaryAnalysis/SymbolicExpression.h>
10#include <Sawyer/Optional.h>
11#include <Sawyer/SharedObject.h>
14namespace BinaryAnalysis {
26 SyscallContext() =
delete;
29 SyscallContext(
const ArchitecturePtr&,
const ExecutionEventPtr &syscallEvent,
30 const std::vector<ExecutionEventPtr> &relatedEvents);
33 SyscallContext(
const ArchitecturePtr&,
const Emulation::RiscOperatorsPtr&,
34 const ExecutionEventPtr &syscallEvent);
36 virtual ~SyscallContext();
51 ArchitecturePtr architecture;
56 Emulation::RiscOperatorsPtr
ops;
68 std::vector<uint64_t> argsConcrete;
75 ExecutionEventPtr syscallEvent;
92 std::vector<ExecutionEventPtr> relatedEvents;
104 ExecutionEventPtr returnEvent;
111 SymbolicExpression::Ptr symbolicReturn;
122 using Ptr = SyscallCallbackPtr;
125 virtual ~SyscallCallback() {}
131 virtual bool operator()(
bool handled, SyscallContext&) = 0;
136 void hello(
const std::string &myName,
const SyscallContext&)
const;
139 void notAnInput(SyscallContext&,
const ExecutionEventPtr&)
const;
Base class for reference counted objects.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
const char * ConcolicPhase(int64_t)
Convert Rose::BinaryAnalysis::Concolic::ConcolicPhase enum constant to a string.
const char * ops(int64_t)
Convert ops enum constant to a string.