NAMEabi-compliance-checker - Compare ABI/binary compatibility for C/C++ shared library
SYNOPSISabi-compliance-checker -d abi-compliance-checker -l <libname> -d1 <v1.xml> -d2 <v2.xml> [-fast]
DESCRIPTIONCompare backward binary compatibility of shared C/C++ libraries. This can be used to help reduce the possibility of an application crashing when the shared libraries it links against have changed. Signatures and data type definations from two separate versions of a library are compared by examining the shared objects (.so) files themselves, and by analysing the header files (.h) provided for the two versions of the library and their dependencies. Shared developers trying to strive for binary compatibility between releases may also use this tool to detect if an any accidental application binary interface (ABI) changes have been introduced.
GETTING STARTEDTwo XML descriptors must be generated and passed to the tool. These configuration files inform abi-compliance-checker where to look for the actual data to compare.
OPTIONS-help Help message and examples (similar to this man page). -d Spit out example template files named lib_descriptor.v1 and lib_descriptor.v2 in the current directory. The two template files are identical and will both require customising. Any existing files of the same names will be overwritten without warning. -l libraryname Library name. -d1 descriptor.xml Path to descriptor of 1st library version (described in DATAFILES below). -d2 descriptor.xml Path to descriptor of 2nd library version. -fast Compiling of all headers together for speed. (Note that this is very fast, but any compiler errors shown for one header may affect files others).
DATAFILESLibrary descriptor XML format: <version> /* Library version */ </version> <headers> /* The list of header paths or directories, one per line */ </headers> <libs> /* The list of shared object paths or directories, one per line */ </libs> <include_paths> /* The list of directories to be searched for header files needed for compiling of library headers, one per line */ /* This section is not necessary */ </include_paths> <gcc_options> /* Addition gcc options, one per line */ /* This section is not necessary */ </gcc_options> <opaque_types> /* The list of types that should be skipped while checking, one per line */ /* This section is not necessary */ </opaque_types> <internal_functions> /* The list of functions that should be skipped while checking, one mangled name per line */ /* This section is not necessary */ </internal_functions> <include_preamble> /* The list of headers that will be included before each analyzed header */ /* For example, it is a tree.h for libxml2 and ft2build.h for freetype2 */ /* This section is not necessary */ /* This section is useless when -fast option selected */ </include_preamble>
EXAMPLESCommand lines: abi-compliance-checker -l glib -d1 descriptor_glib_2.20.3 -d2 descriptor_glib_2.20.4 abi-compliance-checker -l gtk2 -d1 descriptor_gtk2_2.16.4 -d2 descriptor_gtk2_2.17.3 Library descriptor example: <version>2.26.0</version> <headers> /usr/local/librsvg/librsvg-2.26.0/include </headers> <libs> /usr/local/librsvg/librsvg-2.26.0/lib </libs> <include_paths> /usr/include/glib-2.0 /usr/include/gtk-2.0 /usr/include/atk-1.0 /usr/include/cairo /usr/include/pango-1.0 /usr/include/pixman-1 /usr/include/freetype2 /usr/include/libpng12 </include_paths>
BUGSUpstream bug reports for abi-compliance-checker should be emailed to <email@example.com>.
AUTHORAndrey Ponomarenko <firstname.lastname@example.org> - Institute for System Programming, Russian Academy of Sciences and the The Linux Foundation. Distributed under the terms of the GNU General Public License version 3 or later. This manual page was written for Debian/Ubuntu by Paul Sladen <email@example.com> and is hereby also distributed under the GPLv3 or later.
SEE ALSOWebsite: //ispras.linux- foundation.org/index.php/ABI_compliance_checker ABI-COMPLIANCE-CHECKER(1)