NAME:
  ABI Compliance Checker (ABICC) - a tool for checking backward binary and source-level compatibility of a C/C++ software library.
  
  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.
  
  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 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/
  
  The tool is a core of the ABI Tracker and Upstream Tracker projects: https://abi-laboratory.pro/tracker/

INSTALL:
  sudo make install prefix=/usr

REQUIRES:
  Perl 5
  G++
  GNU Binutils
  Ctags
  ABI Dumper (0.99.15 or newer)

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-0.dump -lver 0
        abi-dumper NEW.so -o ABI-1.dump -lver 1
      
   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-0.dump -new ABI-1.dump

USAGE (ORIGINAL):
  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 basic tests for C and about 200 basic tests for C++ API/ABI breaks.
