ROSE 0.11.145.147
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 <boost/filesystem.hpp>
8#include <boost/process/child.hpp>
9#include <Sawyer/Trace.h>
10
11namespace Rose {
12namespace BinaryAnalysis {
13namespace Concolic {
14namespace M68kSystem {
15
17class TracingExecutor: public Concolic::ConcreteExecutor {
18 using Super = Concolic::ConcreteExecutor;
19
20public:
22 using Ptr = TracingExecutorPtr;
23
24protected:
25 explicit TracingExecutor(const std::string&); // for factories
26 explicit TracingExecutor(const DatabasePtr&);
27public:
28 ~TracingExecutor();
29
30public:
32 static Ptr instance(const DatabasePtr&);
33
35 static Ptr factory();
36
37public:
38 virtual bool matchFactory(const std::string&) const override;
39 virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
40 virtual Concolic::ConcreteResultPtr execute(const TestCasePtr&) override;
41
42private:
43 // Start running QEMU asynchronously
44 boost::process::child startQemu(const boost::filesystem::path &firmwareName);
45};
46
47} // namespace
48} // namespace
49} // namespace
50} // namespace
51
52#endif
53#endif
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.