ROSE 0.11.145.247
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#ifdef ROSE_ENABLE_BOOST_SERIALIZATION
8#include <boost/serialization/export.hpp>
9#include <boost/serialization/access.hpp>
10#include <boost/serialization/nvp.hpp>
11#include <boost/serialization/base_object.hpp>
12#endif
13
14#include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
15#include <Sawyer/Optional.h>
16#include <Sawyer/SharedPointer.h>
17#include <string>
18
19namespace Rose {
20namespace BinaryAnalysis {
21namespace Concolic {
22namespace I386Linux {
23
25class ExitStatusExecutor: public Concolic::ConcreteExecutor {
26 using Super = Concolic::ConcreteExecutor;
27
28public:
30 using Ptr = ExitStatusExecutorPtr;
31
35 using Persona = Sawyer::Optional<unsigned long>;
36
37protected:
38 bool useAddressRandomization_ = false; // enable/disable address space randomization in the OS
39
40protected:
41 explicit ExitStatusExecutor(const std::string &name); // for creating a factory
42 explicit ExitStatusExecutor(const DatabasePtr&);
43
44public:
45 ~ExitStatusExecutor();
46
48 static Ptr instance(const DatabasePtr&);
49
51 static Ptr factory();
52
59 bool useAddressRandomization() const { return useAddressRandomization_; }
60 void useAddressRandomization(bool b) { useAddressRandomization_ = b; }
63public:
64 virtual bool matchFactory(const std::string&) const override;
65 virtual Concolic::ConcreteExecutorPtr instanceFromFactory(const DatabasePtr&) override;
66 virtual Concolic::ConcreteResultPtr execute(const TestCasePtr&) override;
67};
68
69} // namespace
70} // namespace
71} // namespace
72} // namespace
73
74#endif
75#endif
Holds a value or nothing.
Definition Optional.h:56
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.