1#ifndef ROSE_BinaryAnalysis_ModelChecker_ErrorTag_H
2#define ROSE_BinaryAnalysis_ModelChecker_ErrorTag_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_MODEL_CHECKER
5#include <Rose/BinaryAnalysis/ModelChecker/Tag.h>
7#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
8#include <Rose/BinaryAnalysis/SymbolicExpression.h>
11namespace BinaryAnalysis {
12namespace ModelChecker {
19class ErrorTag:
public NameTag {
21 using Ptr = ErrorTagPtr;
24 const std::string mesg_;
27 const SymbolicExpression::Ptr symbolic_;
28 const InstructionSemantics::BaseSemantics::SValuePtr svalue_;
33 ErrorTag(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
35 ErrorTag(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
36 const SymbolicExpression::Ptr&);
37 ErrorTag(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
38 const InstructionSemantics::BaseSemantics::SValuePtr&);
48 static Ptr instance(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*);
49 static Ptr instance(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
51 static Ptr instance(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
52 const SymbolicExpression::Ptr&);
53 static Ptr instance(
size_t nodeStep,
const std::string &name,
const std::string &mesg,
SgAsmInstruction*,
54 const InstructionSemantics::BaseSemantics::SValuePtr&);
74 void print(std::ostream &out,
const std::string &prefix)
const override;
75 void toYaml(std::ostream &out,
const std::string &prefix)
const override;
76 Sarif::ResultPtr toSarif(
const Sarif::AnalysisPtr&)
const override;
Holds a value or nothing.
Base class for machine instructions.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
void print(const StackVariables &, const Partitioner2::PartitionerConstPtr &, std::ostream &out, const std::string &prefix="")
Print info about multiple local variables.
void message(Sawyer::Message::Importance, const Ast::FilePtr &, const Token &, const std::string &mesg)
Print a diagnostic message to standard error.
Importance
Level of importance for a message.
@ ERROR
Error messages that indicate an abnormal situation from which the program was able to at least partia...