ROSE  0.11.50.0
OobTag.h
1 #ifndef ROSE_BinaryAnalysis_ModelChecker_OobTag_H
2 #define ROSE_BinaryAnalysis_ModelChecker_OobTag_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
5 
6 #include <Rose/BinaryAnalysis/ModelChecker/Tag.h>
7 #include <Rose/BinaryAnalysis/InstructionSemantics2/BaseSemantics/Types.h>
8 
9 namespace Rose {
10 namespace BinaryAnalysis {
11 namespace ModelChecker {
12 
14 class OobTag: public Tag {
15 public:
16  using Ptr = OobTagPtr;
17 
18 private:
19  const TestMode testMode_; // may or must, but not off
20  const IoMode ioMode_; // read or write
21  const SgAsmInstruction *insn_; // instruction where the oob access occurs (optional)
22  const InstructionSemantics2::BaseSemantics::SValuePtr addr_; // memory address that is accessed
23 
24 protected:
25  OobTag() = delete;
28 
29 public:
30  ~OobTag();
31 
35  static Ptr instance(size_t nodeStep, TestMode, IoMode, SgAsmInstruction*,
37 
38 public:
39  virtual std::string name() const override;
40  virtual std::string printableName() const override;
41  virtual void print(std::ostream&, const std::string &prefix) const override;
42  virtual void toYaml(std::ostream&, const std::string &prefix) const override;
43 };
44 
45 } // namespace
46 } // namespace
47 } // namespace
48 
49 #endif
50 #endif
Base class for machine instructions.
virtual void print(std::ostream &, const std::string &prefix) const override
Print multi-line information about the tag.
TestMode
Mode by which comparisons are made.
virtual void toYaml(std::ostream &, const std::string &prefix) const override
Print multi-line information about the tag in YAML format.
Main namespace for the ROSE library.
IoMode
Direction of data wrt storage.
Information tagged to a path node.
Definition: Tag.h:22
size_t nodeStep() const
Property: Node step.
static Ptr instance(size_t nodeStep, TestMode, IoMode, SgAsmInstruction *, const InstructionSemantics2::BaseSemantics::SValuePtr &addr)
Allocating constructor.
Tag that describes an out-of-bounds memory access.
Definition: OobTag.h:14
virtual std::string name() const override
Property: Generic name of tag.
virtual std::string printableName() const override
String to identify this tag.