ROSE 0.11.145.147
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/AddressSet.h>
8#include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
9
10#include <Sawyer/SharedObject.h>
11#include <Sawyer/SharedPointer.h>
12
13#include <string>
14
15namespace Rose {
16namespace BinaryAnalysis {
17namespace Concolic {
18namespace I386Linux {
19
23class TracingExecutor: public Concolic::ConcreteExecutor {
24 using Super = Concolic::ConcreteExecutor;
25
26public:
28 using Ptr = TracingExecutorPtr;
29
30
31private:
32 friend class boost::serialization::access;
33
34 template<class S>
35 void serialize(S &s, const unsigned /*version*/) {}
36
37protected:
38 TracingExecutor(); // for serialization
39 explicit TracingExecutor(const std::string &name); // for factories
40 explicit TracingExecutor(const DatabasePtr&);
41
42public:
43 ~TracingExecutor();
44
46 static Ptr instance(const DatabasePtr&);
47
49 static Ptr factory();
50
52 static int exitStatus(const ConcreteResultPtr&);
53
55 const AddressSet& executedVas(const ConcreteResultPtr&);
56
57 ConcreteResultPtr execute(const TestCasePtr&) override;
58
59 // Documented in super class
60 virtual bool matchFactory(const std::string&) const override;
61 virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
62};
63
64} // namespace
65} // namespace
66} // namespace
67} // namespace
68
69#endif
70#endif
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
Sawyer::Container::Set< Address > AddressSet
Set of addresses.
Definition AddressSet.h:13
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
The ROSE library.