GTIRB  v2.2.0
GrammaTech Intermediate Representation for Binaries: C++ API
Classes | Namespaces | Typedefs | Enumerations
SymbolicExpression.hpp File Reference

Types and operations for symbolic expressions. More...

#include <gtirb/Addr.hpp>
#include <gtirb/proto/SymbolicExpression.pb.h>
#include <bitset>
#include <boost/range/iterator_range.hpp>
#include <cstdint>
#include <functional>
#include <map>
#include <string>
#include <variant>
Include dependency graph for SymbolicExpression.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  std::hash< gtirb::SymAddrAddr >
 
struct  std::hash< gtirb::SymAddrConst >
 
struct  gtirb::SymAddrAddr
 Represents a symbolic operand of the form "(Sym1 - Sym2) / Scale + Offset". More...
 
struct  gtirb::SymAddrConst
 Represents a symbolic operand of the form "Sym + Offset". More...
 

Namespaces

 gtirb
 Main namespace for the GTIRB API.
 
 std
 

Typedefs

using gtirb::SymAttributeSet = std::set< SymAttribute >
 
using gtirb::SymbolicExpression = std::variant< SymAddrConst, SymAddrAddr >
 A symbolic expression. More...
 

Enumerations

enum  gtirb::SymAttribute : uint16_t {
  gtirb::SymAttribute::GOT = proto::SymAttribute::GOT, gtirb::SymAttribute::GOTPC = proto::SymAttribute::GOTPC, gtirb::SymAttribute::GOTOFF = proto::SymAttribute::GOTOFF, gtirb::SymAttribute::GOTREL = proto::SymAttribute::GOTREL,
  gtirb::SymAttribute::PLT = proto::SymAttribute::PLT, gtirb::SymAttribute::PLTOFF = proto::SymAttribute::PLTOFF, gtirb::SymAttribute::PCREL = proto::SymAttribute::PCREL, gtirb::SymAttribute::SECREL = proto::SymAttribute::SECREL,
  gtirb::SymAttribute::TLS = proto::SymAttribute::TLS, gtirb::SymAttribute::TLSGD = proto::SymAttribute::TLSGD, gtirb::SymAttribute::TLSLD = proto::SymAttribute::TLSLD, gtirb::SymAttribute::TLSLDM = proto::SymAttribute::TLSLDM,
  gtirb::SymAttribute::TLSCALL = proto::SymAttribute::TLSCALL, gtirb::SymAttribute::TLSDESC = proto::SymAttribute::TLSDESC, gtirb::SymAttribute::TPREL = proto::SymAttribute::TPREL, gtirb::SymAttribute::TPOFF = proto::SymAttribute::TPOFF,
  gtirb::SymAttribute::DTPREL = proto::SymAttribute::DTPREL, gtirb::SymAttribute::DTPOFF = proto::SymAttribute::DTPOFF, gtirb::SymAttribute::DTPMOD = proto::SymAttribute::DTPMOD, gtirb::SymAttribute::NTPOFF = proto::SymAttribute::NTPOFF,
  gtirb::SymAttribute::PAGE = proto::SymAttribute::PAGE, gtirb::SymAttribute::PAGEOFF = proto::SymAttribute::PAGEOFF, gtirb::SymAttribute::CALL = proto::SymAttribute::CALL, gtirb::SymAttribute::LO = proto::SymAttribute::LO,
  gtirb::SymAttribute::HI = proto::SymAttribute::HI, gtirb::SymAttribute::HIGHER = proto::SymAttribute::HIGHER, gtirb::SymAttribute::HIGHEST = proto::SymAttribute::HIGHEST, gtirb::SymAttribute::GOTNTPOFF = proto::SymAttribute::GOTNTPOFF,
  gtirb::SymAttribute::INDNTPOFF = proto::SymAttribute::INDNTPOFF, gtirb::SymAttribute::G0 = proto::SymAttribute::G0, gtirb::SymAttribute::G1 = proto::SymAttribute::G1, gtirb::SymAttribute::G2 = proto::SymAttribute::G2,
  gtirb::SymAttribute::G3 = proto::SymAttribute::G3, gtirb::SymAttribute::UPPER16 = proto::SymAttribute::UPPER16, gtirb::SymAttribute::LOWER16 = proto::SymAttribute::LOWER16, gtirb::SymAttribute::LO12 = proto::SymAttribute::LO12,
  gtirb::SymAttribute::LO15 = proto::SymAttribute::LO15, gtirb::SymAttribute::LO14 = proto::SymAttribute::LO14, gtirb::SymAttribute::HI12 = proto::SymAttribute::HI12, gtirb::SymAttribute::HI21 = proto::SymAttribute::HI21,
  gtirb::SymAttribute::S = proto::SymAttribute::S, gtirb::SymAttribute::PG = proto::SymAttribute::PG, gtirb::SymAttribute::NC = proto::SymAttribute::NC, gtirb::SymAttribute::ABS = proto::SymAttribute::ABS,
  gtirb::SymAttribute::PREL = proto::SymAttribute::PREL, gtirb::SymAttribute::PREL31 = proto::SymAttribute::PREL31, gtirb::SymAttribute::TARGET1 = proto::SymAttribute::TARGET1, gtirb::SymAttribute::TARGET2 = proto::SymAttribute::TARGET2,
  gtirb::SymAttribute::SBREL = proto::SymAttribute::SBREL, gtirb::SymAttribute::TLSLDO = proto::SymAttribute::TLSLDO, gtirb::SymAttribute::HI16 = proto::SymAttribute::HI16, gtirb::SymAttribute::LO16 = proto::SymAttribute::LO16,
  gtirb::SymAttribute::GPREL = proto::SymAttribute::GPREL, gtirb::SymAttribute::DISP = proto::SymAttribute::DISP, gtirb::SymAttribute::OFST = proto::SymAttribute::OFST, gtirb::SymAttribute::H = proto::SymAttribute::H,
  gtirb::SymAttribute::L = proto::SymAttribute::L, gtirb::SymAttribute::HA = proto::SymAttribute::HA, gtirb::SymAttribute::HIGH = proto::SymAttribute::HIGH, gtirb::SymAttribute::HIGHA = proto::SymAttribute::HIGHA,
  gtirb::SymAttribute::HIGHERA = proto::SymAttribute::HIGHERA, gtirb::SymAttribute::HIGHESTA = proto::SymAttribute::HIGHESTA, gtirb::SymAttribute::TOCBASE = proto::SymAttribute::TOCBASE, gtirb::SymAttribute::TOC = proto::SymAttribute::TOC,
  gtirb::SymAttribute::NOTOC = proto::SymAttribute::NOTOC
}
 The space of attributes that can be applied to a symbolic expression. More...
 

Detailed Description

Types and operations for symbolic expressions.

See also
Symbolic Expressions and Operands.