• Stars
    star
    619
  • Rank 72,496 (Top 2 %)
  • Language
    Perl
  • License
    GNU Lesser Genera...
  • Created over 12 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tool for checking backward API/ABI compatibility of a C/C++ library

ABICC 2.3

ABI Compliance Checker (ABICC) β€” a tool for checking backward binary and source-level compatibility of a C/C++ software library.

Contents

  1. About
  2. Install
  3. Usage
  4. Test suite

About

The tool analyzes changes in API/ABI (ABI=API+compiler ABI) that may break binary compatibility and/or source compatibility: changes in calling stack, v-table changes, removed symbols, renamed fields, etc.

The tool can create and compare ABI dumps for header files and shared objects of a library. The ABI dump for a library can also be created by the ABI Dumper tool (https://github.com/lvc/abi-dumper) if shared objects include debug-info.

The tool is intended for developers of software libraries and Linux maintainers who are interested in ensuring backward compatibility, i.e. allow old applications to run or to be recompiled with newer library versions.

The tool is a core of the ABI Tracker and Upstream Tracker projects: https://abi-laboratory.pro/tracker/

The tool is developed by Andrey Ponomarenko.

Install

sudo make install prefix=/usr
Requires
  • Perl 5
  • GCC C++ (3.0 or newer)
  • GNU Binutils
  • Ctags
  • ABI Dumper (1.1 or newer)
Platforms
  • Linux
  • Mac OS X
  • Windows

Usage

With ABI Dumper
  1. Library should be compiled with -g -Og GCC options to contain DWARF debug info

  2. Create ABI dumps for both library versions using the ABI Dumper (https://github.com/lvc/abi-dumper) tool:

     abi-dumper OLD.so -o ABI-1.dump -lver 1
     abi-dumper NEW.so -o ABI-2.dump -lver 2
    
  3. You can filter public ABI with the help of additional -public-headers option of the ABI Dumper tool

  4. Compare ABI dumps to create report:

     abi-compliance-checker -l NAME -old ABI-1.dump -new ABI-2.dump
    
Compile headers
abi-compliance-checker -lib NAME -old OLD.xml -new NEW.xml

OLD.xml and NEW.xml are XML-descriptors:

<version>
    1.0
</version>

<headers>
    /path/to/headers/
</headers>

<libs>
    /path/to/libraries/
</libs>
Adv. usage

For advanced usage, see doc/index.html or output of -help option.

Test suite

The tool is tested properly in the ABI Tracker and Upstream Tracker projects, by the community and by the internal test suite:

abi-compliance-checker -test

There are about 100 test cases for C and 200 test cases for C++ API/ABI breaks.

More Repositories

1

japi-compliance-checker

A tool for checking backward API/ABI compatibility of a Java library
Perl
365
star
2

pkgdiff

A tool for visualizing changes in Linux software packages
Perl
209
star
3

abi-tracker

A tool to visualize ABI changes timeline of a C/C++ software library
Perl
189
star
4

abi-dumper

Dump ABI of an ELF object containing DWARF debug info
Perl
176
star
5

vtable-dumper

A tool to list content of virtual tables in a shared library
C
117
star
6

api-sanity-checker

An automatic generator of basic unit tests for a C/C++ library
Perl
85
star
7

japi-tracker

A tool to visualize API changes timeline of a Java library
Perl
53
star
8

abi-monitor

A tool to monitor and build new versions of a software library
Perl
27
star
9

pkg-abidiff

Verify backward compatibility of Linux packages (RPM or DEB)
Python
21
star
10

upstream-tracker

A project to monitor and verify compatibility of upstream ABI changes in C/C++ libraries
Shell
15
star
11

abi-reports

JSON-format reports of the ABI Tracker project
Python
11
star
12

kernel-abi-tracker

A tool to monitor and analyze ABI changes in new versions of the Linux kernel
Shell
10
star
13

installer

Install/remove tools and their dependencies
Perl
9
star
14

japi-monitor

A tool to monitor new versions of a Java library
Perl
8
star
15

distdiff

A tool for visualizing changes in Linux distributions
Perl
7
star
16

upstream-tracker-4j

A project to monitor and verify compatibility of upstream API changes in Java libraries
Perl
7
star
17

installer-4j

Install/remove Java tools and their dependencies
Perl
4
star
18

api-reports-4j

JSON-format reports of the Java API Tracker project
4
star
19

articles

Related articles
1
star