ABI Dumper 1.3
ABI Dumper β a tool to dump ABI of an ELF object containing DWARF debug info.
Contents
About
The tool is intended to be used with ABI Compliance Checker tool for tracking ABI changes of a C/C++ library or kernel module: https://github.com/lvc/abi-compliance-checker
The tool is developed by Andrey Ponomarenko.
Install
sudo make install prefix=/usr
Requires
- Perl 5
- Elfutils (eu-readelf)
- GNU Binutils
- Universal Ctags (https://github.com/universal-ctags/ctags)
- Vtable Dumper >= 1.1 (https://github.com/lvc/vtable-dumper)
- ABI Compliance Checker >= 2.2 (https://github.com/lvc/abi-compliance-checker)
- GCC C++
Usage
Input objects should be compiled with -g -Og
additional options to contain DWARF debug info.
abi-dumper libTest.so -o ABI.dump
abi-dumper Module.ko.debug
Examples
abi-dumper lib/libssh.so.3
abi-dumper drm/nouveau/nouveau.ko.debug
Docker
You can try Docker image if the tool is not packaged for your Linux distribution (example for Harfbuzz):
FROM ebraminio/abi-dumper
RUN apt update && \
apt install -y ragel cpanminus && \
git clone https://github.com/harfbuzz/harfbuzz && cd harfbuzz && \
CFLAGS="-Og -g" CXXFLAGS="-Og -g" ./autogen.sh && make && cd .. && \
abi-dumper `find . -name 'libharfbuzz.so.0.*'` && \
cpanm JSON && \
perl -le 'use JSON; print to_json(do shift, {canonical => 1, pretty => 1});' ./ABI.dump > ABI.json
Adv. usage
For advanced usage, see output of --help
option.
Filter public ABI
abi-dumper libTest.so -public-headers PATH
PATH β path to the install tree of a library.
Check for ABI changes
abi-dumper libTest.so.0 -o ABIv0.dump
abi-dumper libTest.so.1 -o ABIv1.dump
abi-compliance-checker -l libTest -old ABIv0.dump -new ABIv1.dump