ROSE 0.11.145.192
M68kSystem/TracingExecutor.h
1#ifndef ROSE_BinaryAnalysis_Concolic_M68kSystem_TracingExecutor_H
2#define ROSE_BinaryAnalysis_Concolic_M68kSystem_TracingExecutor_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
5#include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
6
7#include <Sawyer/Trace.h>
8
9#include <boost/filesystem.hpp>
10#if BOOST_VERSION < 108600
11 #include <boost/process/child.hpp>
12#else
13 #include <boost/process/v1/child.hpp>
14#endif
15
16namespace Rose {
17namespace BinaryAnalysis {
18namespace Concolic {
19namespace M68kSystem {
20
22class TracingExecutor: public Concolic::ConcreteExecutor {
23 using Super = Concolic::ConcreteExecutor;
24
25public:
27 using Ptr = TracingExecutorPtr;
28
29protected:
30 explicit TracingExecutor(const std::string&); // for factories
31 explicit TracingExecutor(const DatabasePtr&);
32public:
33 ~TracingExecutor();
34
35public:
37 static Ptr instance(const DatabasePtr&);
38
40 static Ptr factory();
41
42public:
43 virtual bool matchFactory(const std::string&) const override;
44 virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
45 virtual Concolic::ConcreteResultPtr execute(const TestCasePtr&) override;
46
47private:
48 // Start running QEMU asynchronously
49 boost::process::child startQemu(const boost::filesystem::path &firmwareName);
50};
51
52} // namespace
53} // namespace
54} // namespace
55} // namespace
56
57#endif
58#endif
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.