GTIRB  v2.2.0
GrammaTech Intermediate Representation for Binaries
COMPONENTS

GTIRB Components

The pages in this section serve two purposes.

  • A language-agnostic description of the representation components, with references to language-specific API implementations of these components.
  • A normative description of required API features for GTIRB. If you implement a new API for GTIRB, it must satisfy all these requirements.

Components that must be represented

Component Protobuf Message Type Notes
Node - Root class for many components
IR IR A complete internal representation.
Module Module Represents a single binary (library or executable)
Section Section A named section of a binary.
ByteInterval ByteInterval A contiguous region of bytes in a binary.
CodeBlock CodeBlock A basic block in the binary.
DataBlock DataBlock A data object, possibly symbolic.
ProxyBlock ProxyBlock A placeholder to serve as the endpoint (source or target) of a CfgEdge.
Symbol Symbol Maps a name to an object in the IR.
CFG CFG The interprocedural control flow graph.
AuxDataContainer - Functionality for associating auxiliary data with elements of the representation.
Block - Base class for blocks.
ByteBlock - Base class for blocks that belong to a ByteInterval and store their bytes there.
CfgNode - A block that may appear as a vertex in the CFG.
CfgEdge Edge An edge in the CFG.
CfgEdgeLabel EdgeLabel The label on a CfgEdge.
SymbolicExpression - A data value or instruction operand which should be interpreted as referring to a symbol.
SymAddrConst SymAddrConst A symbolic operand of the form "Sym + Offset".
SymAddrAddr SymAddrAddr A symbolic operand of the form "(Sym1 - Sym2) / Scale + Offset".
Version information - The applicable GTIRB and Protobuf versions.