ROSE  0.11.145.0
I386Linux/TracingExecutor.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_I386Linux_TracingExecutor_H
2 #define ROSE_BinaryAnalysis_Concolic_I386Linux_TracingExecutor_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
6 
7 #include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
8 #include <Sawyer/SharedObject.h>
9 #include <Sawyer/SharedPointer.h>
10 
11 namespace Rose {
12 namespace BinaryAnalysis {
13 namespace Concolic {
14 namespace I386Linux {
15 
19 class TracingExecutor: public Concolic::ConcreteExecutor {
20  using Super = Concolic::ConcreteExecutor;
21 
22 public:
24  using Ptr = TracingExecutorPtr;
25 
26 
27 private:
28  friend class boost::serialization::access;
29 
30  template<class S>
31  void serialize(S &s, const unsigned /*version*/) {}
32 
33 protected:
34  TracingExecutor(); // for serialization
35  explicit TracingExecutor(const std::string &name); // for factories
36  explicit TracingExecutor(const DatabasePtr&);
37 
38 public:
39  ~TracingExecutor();
40 
42  static Ptr instance(const DatabasePtr&);
43 
45  static Ptr factory();
46 
48  static int exitStatus(const ConcreteResultPtr&);
49 
51  const AddressSet& executedVas(const ConcreteResultPtr&);
52 
53  ConcreteResultPtr execute(const TestCasePtr&) override;
54 
55  // Documented in super class
56  virtual bool matchFactory(const std::string&) const override;
57  virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
58 };
59 
60 } // namespace
61 } // namespace
62 } // namespace
63 } // namespace
64 
65 #endif
66 #endif
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
Definition: GraphUtility.h:17
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.