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>
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>
14#include <Rose/BinaryAnalysis/Concolic/ConcreteExecutor.h>
15#include <Sawyer/Optional.h>
16#include <Sawyer/SharedPointer.h>
20namespace BinaryAnalysis {
25class ExitStatusExecutor:
public Concolic::ConcreteExecutor {
26 using Super = Concolic::ConcreteExecutor;
30 using Ptr = ExitStatusExecutorPtr;
38 bool useAddressRandomization_ =
false;
41 explicit ExitStatusExecutor(
const std::string &name);
42 explicit ExitStatusExecutor(
const DatabasePtr&);
45 ~ExitStatusExecutor();
48 static Ptr instance(
const DatabasePtr&);
59 bool useAddressRandomization()
const {
return useAddressRandomization_; }
60 void useAddressRandomization(
bool b) { useAddressRandomization_ = b; }
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;
Holds a value or nothing.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.