ROSE 0.11.145.147
ExitStatusExecutor.h
1#ifndef ROSE_BinaryAnalysis_Concolic_I386Linux_ExitStatusExecutor_H
2#define ROSE_BinaryAnalysis_Concolic_I386Linux_ExitStatusExecutor_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
5#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
6
7#include <boost/serialization/export.hpp>
8#include <boost/serialization/access.hpp>
9#include <boost/serialization/nvp.hpp>
10#include <boost/serialization/base_object.hpp>
11#include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
12#include <Sawyer/Optional.h>
13#include <Sawyer/SharedPointer.h>
14#include <string>
15
16namespace Rose {
17namespace BinaryAnalysis {
18namespace Concolic {
19namespace I386Linux {
20
22class ExitStatusExecutor: public Concolic::ConcreteExecutor {
23 using Super = Concolic::ConcreteExecutor;
24
25public:
27 using Ptr = ExitStatusExecutorPtr;
28
32 using Persona = Sawyer::Optional<unsigned long>;
33
34protected:
35 bool useAddressRandomization_ = false; // enable/disable address space randomization in the OS
36
37protected:
38 explicit ExitStatusExecutor(const std::string &name); // for creating a factory
39 explicit ExitStatusExecutor(const DatabasePtr&);
40
41public:
42 ~ExitStatusExecutor();
43
45 static Ptr instance(const DatabasePtr&);
46
48 static Ptr factory();
49
56 bool useAddressRandomization() const { return useAddressRandomization_; }
57 void useAddressRandomization(bool b) { useAddressRandomization_ = b; }
60public:
61 virtual bool matchFactory(const std::string&) const override;
62 virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
63 virtual Concolic::ConcreteResultPtr execute(const TestCasePtr&) override;
64};
65
66} // namespace
67} // namespace
68} // namespace
69} // namespace
70
71#endif
72#endif
Holds a value or nothing.
Definition Optional.h:56
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.