blob: f0600a7260b925a7e4379dfc68b9580486fa0340 [file] [log] [blame]
Andrey Ponomarenkob1c490a2012-03-11 11:16:12 +04001NAME:
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +03002 ABI Compliance Checker (ABICC) - a tool for checking backward binary and source-level compatibility of a C/C++ software library.
Andrey Ponomarenko8bfdcd82015-09-08 17:58:01 +03003
4 The tool checks header files and shared objects of old and new versions and analyzes changes in API/ABI that may break binary and/or source compatibility: changes in calling stack, v-table changes, removed symbols, renamed fields, etc.
5
6 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.
7
8 The tool is developed by Andrey Ponomarenko. You can order additional reports for visualization of the ABI structure and high detailed binary compatibility analysis here: http://abi-laboratory.pro/
Andrey Ponomarenkob1c490a2012-03-11 11:16:12 +04009
Andrey Ponomarenkoea430402012-03-20 15:36:05 +040010INSTALL:
Andrey Ponomarenko8bfdcd82015-09-08 17:58:01 +030011 sudo make install prefix=/usr
12
13REQUIRES:
14 Perl 5
15 G++
16 GNU Binutils
17 Ctags
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030018 ABI Dumper (0.99.14 or newer)
Andrey Ponomarenkoea430402012-03-20 15:36:05 +040019
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030020USAGE (ORIGINAL):
Andrey Ponomarenkobf5b4972012-03-19 17:50:18 +040021 abi-compliance-checker -lib NAME -old OLD.xml -new NEW.xml
Andrey Ponomarenkob1c490a2012-03-11 11:16:12 +040022
23 OLD.xml and NEW.xml are XML-descriptors:
24
25 <version>
26 1.0
27 </version>
28
29 <headers>
30 /path/to/headers/
31 </headers>
32
33 <libs>
34 /path/to/libraries/
35 </libs>
36
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +040037USAGE WITH ABI DUMPER:
38
Andrey Ponomarenko8bfdcd82015-09-08 17:58:01 +030039 1. Library should be compiled with "-g -Og" GCC options
40 to contain DWARF debug info
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +040041
42 2. Create ABI dumps for both library versions
Andrey Ponomarenko0b2c22b2013-05-30 19:15:17 +040043 using the ABI Dumper (https://github.com/lvc/abi-dumper) tool:
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +040044
45 abi-dumper OLD.so -o ABI-0.dump -lver 0
46 abi-dumper NEW.so -o ABI-1.dump -lver 1
47
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030048 3. Compare ABI dumps to create report:
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +040049
Andrey Ponomarenko8bfdcd82015-09-08 17:58:01 +030050 abi-compliance-checker -l NAME -old ABI-0.dump -new ABI-1.dump
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030051
52ADV. USAGE:
53 For advanced usage, see doc/index.html or output of -help option.