1 #ifndef ROSE_BinaryAnalysis_ModelChecker_SemanticCallbacks_H
2 #define ROSE_BinaryAnalysis_ModelChecker_SemanticCallbacks_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
6 #include <Rose/BinaryAnalysis/ModelChecker/Types.h>
8 #include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
9 #include <Rose/BinaryAnalysis/SmtSolver.h>
10 #include <Rose/Yaml.h>
12 #ifdef ROSE_HAVE_YAMLCPP
13 #include <yaml-cpp/yaml.h>
17 namespace BinaryAnalysis {
18 namespace ModelChecker {
25 class SemanticCallbacks {
28 using Ptr = SemanticCallbacksPtr;
31 const SettingsPtr mcSettings_;
34 SemanticCallbacks() =
delete;
35 explicit SemanticCallbacks(
const SettingsPtr&);
37 virtual ~SemanticCallbacks();
50 virtual void reset() {}
57 SettingsPtr mcSettings()
const;
176 struct CodeAddresses {
178 std::set<rose_addr_t> addresses;
179 bool isComplete =
true;
203 virtual std::vector<TagPtr>
215 virtual std::vector<TagPtr>
220 ExecutionUnitPtr unit;
240 virtual std::vector<NextUnit>
257 #ifdef ROSE_HAVE_YAMLCPP
258 virtual std::list<ExecutionUnitPtr>
259 parsePath(
const YAML::Node&,
const std::string &sourceName) = 0;
261 virtual std::list<ExecutionUnitPtr>
262 parsePath(
const Yaml::Node&,
const std::string &sourceName) = 0;
boost::shared_ptr< RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to a RISC operators object.
boost::shared_ptr< RegisterState > RegisterStatePtr
Shared-ownership pointer to a register state.
Main namespace for the ROSE library.
boost::shared_ptr< State > StatePtr
Shared-ownership pointer to a semantic state.
boost::shared_ptr< Dispatcher > DispatcherPtr
Shared-ownership pointer to a semantics instruction dispatcher.
boost::shared_ptr< MemoryState > MemoryStatePtr
Shared-ownership pointer to a memory state.
Sawyer::SharedPointer< SValue > SValuePtr
Shared-ownership pointer to a semantic value in any domain.
Sawyer::Container::Map< std::string, SymbolicExpression::Ptr > Evidence
Evidence of satisfiability.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
std::shared_ptr< SmtSolver > SmtSolverPtr
Reference counting pointer.