abicheck¶
abicheck detects breaking changes in C/C++ shared libraries before they reach production. Point it at two builds of a library (plus their headers), and it tells you whether existing binaries will keep working or break at runtime.
It supports ELF (Linux), PE/COFF (Windows), and Mach-O (macOS) binaries, and it's a drop-in replacement for abi-compliance-checker.
Why abicheck¶
- Three-layer analysis — ELF/PE/Mach-O symbol tables + Clang AST (via castxml) + DWARF/PDB cross-check. Each layer catches things the others miss.
- 145 detection rules — symbol removal, signature changes, struct/class layout drift, vtable reordering, enum value shifts, qualifier changes, calling conventions, and many more. See the Change Kind Reference.
- Multiple output formats — Markdown, JSON, SARIF (GitHub Code Scanning), HTML.
- Policy profiles —
strict_abi,sdk_vendor,plugin_abi, or custom YAML overrides. - ABICC drop-in — full flag parity for migrating from
abi-compliance-checker. - CI-ready — clear exit codes, SARIF upload, snapshot-based baselines, first-class GitHub Action.
- Agent-friendly — structured JSON, Python API, and an MCP server for AI-driven workflows.
Where to go next¶
New to abicheck?
- Getting Started — install, first check, CI setup.
- Verdicts — what each verdict means and how to react.
- CLI Usage — every command, every flag.
Evaluating or comparing tools?
- Tool Comparison & Benchmarks — abicheck vs
abidiffvs ABICC on a 74-case catalog. - Examples & Case Encyclopedia — all 74 cases with code, runtime demo, and fixes.
- ABI Breaks Explained — real-world scenarios with code.
- Limitations — what abicheck does not catch.
Integrating into a release pipeline?
- GitHub Action — ready-to-paste workflow.
- Output Formats — SARIF, JSON, HTML.
- Exit Codes — for gating CI.
- Policy Profiles and Suppressions.
Migrating from another tool?
Contributing or extending abicheck?