1 #ifndef ROSE_BinaryAnalysis_Concolic_LinuxExecutor_H
2 #define ROSE_BinaryAnalysis_Concolic_LinuxExecutor_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
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>
17 namespace BinaryAnalysis {
21 class LinuxExecutor:
public ConcreteExecutor {
30 class Result:
public ConcreteExecutorResult {
33 std::string exitKind_;
34 std::string capturedOut_;
35 std::string capturedErr_;
38 friend class boost::serialization::access;
42 s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(ConcreteExecutorResult);
43 s & BOOST_SERIALIZATION_NVP(exitStatus_);
44 s & BOOST_SERIALIZATION_NVP(exitKind_);
45 s & BOOST_SERIALIZATION_NVP(capturedOut_);
46 s & BOOST_SERIALIZATION_NVP(capturedErr_);
50 Result(
double rank,
int exitStatus);
61 int exitStatus()
const {
return exitStatus_; }
62 void exitStatus(
int x);
68 std::string out()
const {
return capturedOut_; }
69 void out(
const std::string& output) { capturedOut_ = output; }
71 std::string err()
const {
return capturedErr_; }
72 void err(
const std::string& output) { capturedErr_ = output; }
78 std::string exitKind()
const {
return exitKind_; }
83 bool useAddressRandomization_;
86 explicit LinuxExecutor(
const DatabasePtr&);
92 static Ptr instance(
const DatabasePtr&);
100 bool useAddressRandomization()
const {
return useAddressRandomization_; }
101 void useAddressRandomization(
bool b) { useAddressRandomization_ = b; }
105 ConcreteExecutorResult* execute(
const TestCasePtr&)
override;
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
Holds a value or nothing.
Main namespace for the ROSE library.
Reference-counting intrusive smart pointer.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.