ROSE  0.11.51.0
LinuxTraceExecutor.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_LinuxTraceExecutor_H
2 #define ROSE_BinaryAnalysis_Concolic_LinuxTraceExecutor_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 
18 class LinuxTraceExecutor: public ConcreteExecutor {
19 public:
22 
24  class Result: public ConcreteExecutorResult {
25  public:
26  int exitStatus; // as returned by wait
27  AddressSet executedVas;
28 
29  private:
30  friend class boost::serialization::access;
31 
32  template<class S>
33  void serialize(S &s, const unsigned /*version*/) {
34  s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(ConcreteExecutorResult);
35  s & BOOST_SERIALIZATION_NVP(executedVas);
36  }
37  };
38 
39 protected:
40  explicit LinuxTraceExecutor(const DatabasePtr&);
41 
42 public:
43  ~LinuxTraceExecutor();
44 
46  static Ptr instance(const DatabasePtr&);
47 
49  static int exitStatus(const ConcreteExecutorResult*);
50 
52  const AddressSet& executedVas(const ConcreteExecutorResult*);
53 
54  ConcreteExecutorResult* execute(const TestCasePtr&) override;
55 };
56 
57 } // namespace
58 } // namespace
59 } // namespace
60 
61 #endif
62 #endif
Sawyer::SharedPointer< Node > Ptr
Shared-ownership pointer to an expression Node.
Definition: SymbolicExpr.h:156
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
Main namespace for the ROSE library.
Reference-counting intrusive smart pointer.
Definition: SharedPointer.h:68