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>
14 namespace BinaryAnalysis {
24 class SyscallContext {
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;
105 ExecutionEventPtr returnEvent;
123 using Ptr = SyscallCallbackPtr;
126 virtual ~SyscallCallback() {}
132 virtual bool operator()(
bool handled, SyscallContext&) = 0;
137 void hello(
const std::string &myName,
const SyscallContext&)
const;
140 void notAnInput(SyscallContext&,
const ExecutionEventPtr&)
const;
Main namespace for the ROSE library.
const char * ConcolicPhase(int64_t)
Convert Rose::BinaryAnalysis::Concolic::ConcolicPhase enum constant to a string.
Base class for reference counted objects.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.