ABI: Application Binary Interface
Last modified : 30 October, 2018
So in my exploration of how a C++ compiler compiles code, I came across ABIs. As similar as they sound to APIs, there exists a distinction. Here are some resources that helped me understand it (superficially) :
- Wikipedia
- This stack overflow question
- System V x86-64 ABI : This document just shows the diff over x86 ABI (which is 32-bit).
- Documentation for Itanium C++ ABI
- Documentation for Itanium C++ ABI
- Compiler Writer documentation for LLVM : The ABI section mentions System V and Itanium.
Note that even though the Itanium architecture itself (IA64) is a dying instruction set architecture (ISA), the Itanium ABI is not.
Here are some tools that can help inspect binaries 1. libabigail-tools 2. abi-compliance-checker
$ abidiff zsh/5.3.1/zsh/files.so lib64/xtables/libxt_time.so
Functions changes summary: 0 Removed, 0 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 6 Removed, 1 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
6 Removed function symbols not referenced by debug info:
boot_
cleanup_
enables_
features_
finish_
setup_
1 Added function symbol not referenced by debug info:
libxt_time_init
All content on this website is licensed as Creative Commons-Attribution-ShareAlike 4.0 License. Opinions expressed are solely my own.