Difference between revisions of "Binary Compatibility"
From OpenSSLWiki
Jump to navigationJump to searchAponomarenko (talk | contribs) |
Aponomarenko (talk | contribs) |
||
Line 14: | Line 14: | ||
Install [https://github.com/lvc/abi-dumper abi-dumper] tool (1.0 Beta or newer) and run it on shared objects to create ABI dumps: | Install [https://github.com/lvc/abi-dumper abi-dumper] tool (1.0 Beta or newer) and run it on shared objects to create ABI dumps: | ||
− | abi-dumper -o libssl-1.0. | + | abi-dumper -o libssl-1.0.2d.abi -public-headers $PREFIX/openssl-1.0.2d/include/ -vnum 1.0.2d $PREFIX/openssl-1.0.2d/lib/libssl.so.1.0.0 |
The -public-headers option is needed to filter out private part of the ABI. | The -public-headers option is needed to filter out private part of the ABI. |
Revision as of 06:19, 26 February 2017
This approach allows to manually detect most of the possible binary compatibility issues between any particular releases of the OpenSSL. Alternatively one can set up a local instance of the ABI tracker for OpenSSL to automate analysis for sequential releases of the library.
Build two versions of the library with debug info
The library should be built with -g and -Og options of the GCC compiler and installed to a local directory (PREFIX=/home/USER):
./config -d --prefix=$PREFIX/openssl-1.0.2d/ shared sed -i -e 's/ \-O0 / /' Makefile sed -i -e 's/ \-g / -g -Og /' Makefile make make install_sw
Make ABI dumps of the library versions
Install abi-dumper tool (1.0 Beta or newer) and run it on shared objects to create ABI dumps:
abi-dumper -o libssl-1.0.2d.abi -public-headers $PREFIX/openssl-1.0.2d/include/ -vnum 1.0.2d $PREFIX/openssl-1.0.2d/lib/libssl.so.1.0.0
The -public-headers option is needed to filter out private part of the ABI.
Compare ABI dumps to produce report
Install abi-compliance-checker tool (1.99.13 or newer) and run it on two ABI dumps to create report:
abi-compliance-checker -l libssl -bin -old libssl-1.0.2.c.abi -new libssl-1.0.2.d.abi -report-path ./report.html