Tool
GTIRB
GrammaTech's intermediate representation for passing disassembly, analysis and rewriting results between binary tools, modeled on the role LLVM-IR plays for compilers. An IR holds modules for executables or libraries with their sections, byte intervals, code and data blocks, symbols and symbolic operands, plus an inter-procedural CFG and AuxData tables for analysis results, all referenced by UUID; instruction semantics are deliberately left out, so machine code stays as raw bytes for Capstone/Keystone or any other IL. It serializes as protobuf, with C++, Python and Common Lisp APIs and a partial Java API; the separately listed ddisasm produces it.
- Targets
- Binary
- Category
- Binary analysis libraries
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- PyPI's newest gtirb is 2.3.2, uploaded 2026-06-16 as a pure-Python wheel for Python 3.8+; the changelog says the PyPI package needs protobuf 4.21.1 or newer. The reviewed master commit of the same day bumps version.txt to 2.3.3, which CHANGELOG marks unreleased. GitHub releases stop at v2.0.0 (2023-12-14, no files), and later versions are git tags. The README says ABI compatibility is not yet provided across any version change, and that stable or unstable packages must match the installed ddisasm and gtirb-pprinter.
- Prebuilt options are Windows .zip builds and Ubuntu 20.04 (focal) apt packages from GrammaTech's download server, and the grammatech/ddisasm Docker image with GTIRB, ddisasm and gtirb-pprinter; the README warns that apt metapackages for stable gtirb 2.0.0 and older conflict on upgrade. Source builds need a 64-bit C++17 compiler (GCC, Clang or Visual Studio), CMake 3.10+, Protobuf 3.0.0+ and Boost 1.68+; the Common Lisp API needs further manual setup, and the Java API is marked incomplete.
- GTIRB is a data structure, not an analyzer: IR comes from a producer such as ddisasm. The schema names file formats including ELF, PE, COFF, XCOFF, Mach-O and raw images, and ISAs from IA-32 and x64 to ARM, MIPS, PowerPC and, from 2.3.2, RISC-V; what a given producer actually supports is up to that tool. Programs in doc/examples walk the C++ API and compute CFG paths, data symbols and functions in several languages.
- The GitLab CI configuration builds and tests on Ubuntu 20.04, 22.04 and 24.04 with GCC and Clang, plus static, Java, Common Lisp, Python and coverage jobs; the GitHub Actions workflow only builds and publishes documentation. No pipeline results were checked and nothing was built for this review.
- LICENSE.txt places GTIRB under MIT (2018, GrammaTech) and appends Apache-2.0 with LLVM Exceptions for included third-party code, which GitHub leaves unclassified; contributors must sign GrammaTech's CLA. gtirb-pprinter and gtirb-rewriting are separate projects that were not reviewed, and the reviewed sources establish no REA connection.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · GrammaTech/gtirb · Revision 98fecec
- LICENSE.txt GitHub · GrammaTech/gtirb · Revision 98fecec
- CHANGELOG.md GitHub · GrammaTech/gtirb · Revision 98fecec
- version.txt GitHub · GrammaTech/gtirb · Revision 98fecec
- CMakeLists.txt GitHub · GrammaTech/gtirb · Revision 98fecec
- PROTOBUF.md GitHub · GrammaTech/gtirb · Revision 98fecec
- AuxData.md GitHub · GrammaTech/gtirb · Revision 98fecec
- proto/Module.proto GitHub · GrammaTech/gtirb · Revision 98fecec
- CONTRIBUTING.md GitHub · GrammaTech/gtirb · Revision 98fecec
- .ci/gitlab-ci.yml GitHub · GrammaTech/gtirb · Revision 98fecec
- .github/workflows/actions.yml GitHub · GrammaTech/gtirb · Revision 98fecec
- doc/examples GitHub · GrammaTech/gtirb · Revision 98fecec
- https://github.com/GrammaTech/gtirb/releases/tag/v2.0.0
- https://pypi.org/project/gtirb/2.3.2/
More in Native binaries
- Quokka · Tool
- knife · Tool
- DownUnderCTF: masked-squares flag checker · Case study
- Show Your Work: a measured dissection of REA's evidence architecture · Case study
- Windows loader: static malware analysis with REA and Codex · Case study
- OpenBSD netcat: static REA and Ghidra investigation · Case study