Dump ABI of an ELF object containing DWARF debug info
Perl Makefile
Clone or download

README.md

ABI Dumper 1.1

ABI Dumper — a tool to dump ABI of an ELF object containing DWARF debug info.

Contents

  1. About
  2. Install
  3. Usage
  4. Filter public ABI
  5. Check for ABI changes

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

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