Andrey Ponomarenko | b1c490a | 2012-03-11 11:16:12 +0400 | [diff] [blame] | 1 | NAME: |
Andrey Ponomarenko | e3419b4 | 2016-01-28 15:06:08 +0300 | [diff] [blame^] | 2 | ABI Compliance Checker (ABICC) - a tool for checking backward binary and source-level compatibility of a C/C++ software library. |
Andrey Ponomarenko | 8bfdcd8 | 2015-09-08 17:58:01 +0300 | [diff] [blame] | 3 | |
| 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 Ponomarenko | b1c490a | 2012-03-11 11:16:12 +0400 | [diff] [blame] | 9 | |
Andrey Ponomarenko | ea43040 | 2012-03-20 15:36:05 +0400 | [diff] [blame] | 10 | INSTALL: |
Andrey Ponomarenko | 8bfdcd8 | 2015-09-08 17:58:01 +0300 | [diff] [blame] | 11 | sudo make install prefix=/usr |
| 12 | |
| 13 | REQUIRES: |
| 14 | Perl 5 |
| 15 | G++ |
| 16 | GNU Binutils |
| 17 | Ctags |
Andrey Ponomarenko | e3419b4 | 2016-01-28 15:06:08 +0300 | [diff] [blame^] | 18 | ABI Dumper (0.99.14 or newer) |
Andrey Ponomarenko | ea43040 | 2012-03-20 15:36:05 +0400 | [diff] [blame] | 19 | |
Andrey Ponomarenko | e3419b4 | 2016-01-28 15:06:08 +0300 | [diff] [blame^] | 20 | USAGE (ORIGINAL): |
Andrey Ponomarenko | bf5b497 | 2012-03-19 17:50:18 +0400 | [diff] [blame] | 21 | abi-compliance-checker -lib NAME -old OLD.xml -new NEW.xml |
Andrey Ponomarenko | b1c490a | 2012-03-11 11:16:12 +0400 | [diff] [blame] | 22 | |
| 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 Ponomarenko | fe00e7e | 2013-05-24 16:48:30 +0400 | [diff] [blame] | 37 | USAGE WITH ABI DUMPER: |
| 38 | |
Andrey Ponomarenko | 8bfdcd8 | 2015-09-08 17:58:01 +0300 | [diff] [blame] | 39 | 1. Library should be compiled with "-g -Og" GCC options |
| 40 | to contain DWARF debug info |
Andrey Ponomarenko | fe00e7e | 2013-05-24 16:48:30 +0400 | [diff] [blame] | 41 | |
| 42 | 2. Create ABI dumps for both library versions |
Andrey Ponomarenko | 0b2c22b | 2013-05-30 19:15:17 +0400 | [diff] [blame] | 43 | using the ABI Dumper (https://github.com/lvc/abi-dumper) tool: |
Andrey Ponomarenko | fe00e7e | 2013-05-24 16:48:30 +0400 | [diff] [blame] | 44 | |
| 45 | abi-dumper OLD.so -o ABI-0.dump -lver 0 |
| 46 | abi-dumper NEW.so -o ABI-1.dump -lver 1 |
| 47 | |
Andrey Ponomarenko | e3419b4 | 2016-01-28 15:06:08 +0300 | [diff] [blame^] | 48 | 3. Compare ABI dumps to create report: |
Andrey Ponomarenko | fe00e7e | 2013-05-24 16:48:30 +0400 | [diff] [blame] | 49 | |
Andrey Ponomarenko | 8bfdcd8 | 2015-09-08 17:58:01 +0300 | [diff] [blame] | 50 | abi-compliance-checker -l NAME -old ABI-0.dump -new ABI-1.dump |
Andrey Ponomarenko | e3419b4 | 2016-01-28 15:06:08 +0300 | [diff] [blame^] | 51 | |
| 52 | ADV. USAGE: |
| 53 | For advanced usage, see doc/index.html or output of -help option. |