GTIRB  v2.1.0
GrammaTech Intermediate Representation for Binaries: C++ API
Files | Classes | Typedefs | Enumerations
Symbolic Expressions and Operands

Represent data values or instruction operands which should be intepreted as referring to symbols. More...

Files

file  SymbolicExpression.hpp
 Types and operations for symbolic expressions.
 

Classes

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...
 

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

Represent data values or instruction operands which should be intepreted as referring to symbols.

Typedef Documentation

◆ SymAttributeSet

using gtirb::SymAttributeSet = typedef std::set<SymAttribute>

◆ SymbolicExpression

using gtirb::SymbolicExpression = typedef std::variant<SymAddrConst, SymAddrAddr>

Enumeration Type Documentation

◆ SymAttribute

enum gtirb::SymAttribute : uint16_t
strong

#include <SymbolicExpression.hpp>

The space of attributes that can be applied to a symbolic expression.

See doc/general/SymbolicExpression.md for more details.

Enumerator
GOT 
GOTPC 
GOTOFF 
GOTREL 
PLT 
PLTOFF 
PCREL 
SECREL 
TLS 
TLSGD 
TLSLD 
TLSLDM 
TLSCALL 
TLSDESC 
TPREL 
TPOFF 
DTPREL 
DTPOFF 
DTPMOD 
NTPOFF 
PAGE 
PAGEOFF 
CALL 
LO 
HI 
HIGHER 
HIGHEST 
GOTNTPOFF 
INDNTPOFF 
G0 
G1 
G2 
G3 
UPPER16 
LOWER16 
LO12 
LO15 
LO14 
HI12 
HI21 
PG 
NC 
ABS 
PREL 
PREL31 
TARGET1 
TARGET2 
SBREL 
TLSLDO 
HI16 
LO16 
GPREL 
DISP 
OFST 
HA 
HIGH 
HIGHA 
HIGHERA 
HIGHESTA 
TOCBASE 
TOC 
NOTOC