abipkgdiff program compares the ABI of ELF binaries carried by two versions of a given package. It then emits a textual report that precisely describes the changes that potentially make the ELF binaries ABI incompatible. Note that
abipkgdiff analyzes the ABI of the binaries by essentially looking at the debug information accompanying the ELF binaries.
$ sudo yum install libabigail (or as root) # yum install libabigail
abipkgdiff program compares the ABIs of ELF binaries contained in two versions of a given package P. Let's call P1.rpm and P2.rpm the former and later version of packageP. Please note that
abipkgdiff needs the debug information packages of P1 and P2 in order to operate. Let's call these debug info packages P1-debuginfo.rpm and P2-debuginfo.rpm You need to have them available locally, just as you do for P1.rpm and P2.rpm
To compare the ABIs of P1 and P2 here is the command line:
abipkgdiff --d1 P1-debuginfo.rpm --d2 P2-debuginfo.rpm P1.rpm P2.rpm
A report with details of the ABI changes is emitted on the standard output of the command line.
Comparing binaries stuffed into directories
If you have two directories named, for instance,
new, which contain two versions of the same binaries, then abipkgdiff can compare the ABIs of the different versions of the binaries, assuming
old/ contains the older versions of the binaries and
new/ contains the newer versions. The command line would then be:
abipkgdiff old new
This can come in handy, especially if
old has been populated by typing
"make install DESTDIR=/path/to/old" while being in the build directory of the old binary, and if
new has been populated by typing
"make install DESTDIR=/path/to/new" while being in the build directory of the new binary.