blob: eeaa460b1d23aaeaf66de1f14bf2b3d610bdd025 [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
Andrey Ponomarenko26742a82016-09-27 18:27:08 +03008 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: https://abi-laboratory.pro/
Andrey Ponomarenko6763a7c2016-10-09 02:08:52 +03009
10 The tool is a core of the ABI Tracker and Upstream Tracker projects: https://abi-laboratory.pro/tracker/
Andrey Ponomarenkob1c490a2012-03-11 11:16:12 +040011
Andrey Ponomarenkoea430402012-03-20 15:36:05 +040012INSTALL:
Andrey Ponomarenko8bfdcd82015-09-08 17:58:01 +030013 sudo make install prefix=/usr
14
15REQUIRES:
16 Perl 5
17 G++
18 GNU Binutils
19 Ctags
Andrey Ponomarenkodd172162016-10-04 19:41:25 +030020 ABI Dumper (0.99.15 or newer)
Andrey Ponomarenkoea430402012-03-20 15:36:05 +040021
Andrey Ponomarenko8a4c3f82016-02-21 03:45:16 +030022USAGE (WITH ABI DUMPER):
23
24 1. Library should be compiled with "-g -Og" GCC options
25 to contain DWARF debug info
26
27 2. Create ABI dumps for both library versions
28 using the ABI Dumper (https://github.com/lvc/abi-dumper) tool:
29
30 abi-dumper OLD.so -o ABI-0.dump -lver 0
31 abi-dumper NEW.so -o ABI-1.dump -lver 1
Andrey Ponomarenkodd172162016-10-04 19:41:25 +030032
33 3. You can filter public ABI with the help of
34 additional -public-headers option of the ABI Dumper tool.
35
36 4. Compare ABI dumps to create report:
Andrey Ponomarenko8a4c3f82016-02-21 03:45:16 +030037
38 abi-compliance-checker -l NAME -old ABI-0.dump -new ABI-1.dump
39
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030040USAGE (ORIGINAL):
Andrey Ponomarenkobf5b4972012-03-19 17:50:18 +040041 abi-compliance-checker -lib NAME -old OLD.xml -new NEW.xml
Andrey Ponomarenkob1c490a2012-03-11 11:16:12 +040042
43 OLD.xml and NEW.xml are XML-descriptors:
44
45 <version>
46 1.0
47 </version>
48
49 <headers>
50 /path/to/headers/
51 </headers>
52
53 <libs>
54 /path/to/libraries/
55 </libs>
56
Andrey Ponomarenkoe3419b42016-01-28 15:06:08 +030057ADV. USAGE:
58 For advanced usage, see doc/index.html or output of -help option.
Andrey Ponomarenko6763a7c2016-10-09 02:08:52 +030059
60TEST SUITE:
61 The tool is tested properly in the ABI Tracker and Upstream Tracker
62 projects, by the community and by the internal test suite:
63
64 abi-compliance-checker -test
65
66 There are about 100 basic tests for C and about 200 basic tests for C++ API/ABI breaks.