ROSE  0.11.145.0
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 
11 namespace Rose {
12 namespace BinaryAnalysis {
13 namespace Concolic {
14 namespace M68kSystem {
15 
17 class TracingExecutor: public Concolic::ConcreteExecutor {
18  using Super = Concolic::ConcreteExecutor;
19 
20 public:
22  using Ptr = TracingExecutorPtr;
23 
24 protected:
25  explicit TracingExecutor(const std::string&); // for factories
26  explicit TracingExecutor(const DatabasePtr&);
27 public:
28  ~TracingExecutor();
29 
30 public:
32  static Ptr instance(const DatabasePtr&);
33 
35  static Ptr factory();
36 
37 public:
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 
42 private:
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
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.