<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="keywords" content="C, C++, ABI, API, compatibility, checker" />
  <meta name="description" content="A tool for checking backward API/ABI compatibility of a C/C++ library" />
  <title>ABI Compliance Checker</title>

  <style type="text/css">
    body {
      margin-top: 1.0em;
      background-color: #deeef7;
      font-family: Helvetica, Arial, FreeSans, san-serif;
      color: #000000;
    }
    #container {
      margin: 0 auto;
      width: 700px;
    }
    h1 { font-size: 3.8em; color: #211108; margin-bottom: 3px;margin-top:0px;padding-top:0px;}
    h1 .small { font-size: 0.4em; }
    h1 a { text-decoration: none }
    h2 { font-size: 1.5em; color: #211108; }
    h3 { text-align: center; color: #211108; }
    a { color: #211108; }
    .description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
    .download { float: right; }
    pre {padding: 0px;margin: 0px;padding-left: 10px;word-wrap:break-word;white-space: pre-wrap;}
    hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
    .footer { text-align:center; padding-top:30px; font-style: italic; }
    .code {border: dashed 1px gray; background-color: #f0f0f0; padding: 5px; padding-left: 10px; padding-right: 10px;}
    .listing {padding: 10px;border: 1px solid black;width: 70%;font-family:"DejaVu Sans Mono", "Monaco", "Courier New", monospace;font-size:14px;}
    .summary {border:1px solid black;border-collapse:collapse;}
    table.summary td, table.summary th {border:1px solid black;padding:2px;}
  </style>

</head>

<body>
  <a href="https://github.com/lvc/abi-compliance-checker"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>

  <div id="container">

    <div class="download">
      <a href="https://github.com/lvc/abi-compliance-checker/zipball/master">
        <img style="border: 0;" width="90" src="https://github.com/images/modules/download/zip.png" alt="" /></a>
      <a href="https://github.com/lvc/abi-compliance-checker/tarball/master">
        <img style="border: 0;" width="90" src="https://github.com/images/modules/download/tar.png" alt="" /></a>
    </div>
   
    <h1>ABI Compliance Checker</h1>

    <div class="description">
      A tool for checking backward API/ABI compatibility of a C/C++ library
    </div>

      <p/>
      ABI Compliance Checker (ABICC) is a tool for checking backward binary and source-level compatibility of a C/C++ library. The tool checks header files and shared libraries of old and new versions and analyzes changes in API and ABI (ABI=API+compiler ABI) that may break binary and/or source compatibility: changes in calling stack, v-table changes, removed symbols, renamed fields, etc.
      
      <p/>
      Binary incompatibility may result in crashing or incorrect behavior of applications built with an old version of a library if they run on a new one. Source incompatibility may result in recompilation errors with a new library version. 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.
      
      <p/>
      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: <a href='https://abi-laboratory.pro/'>https://abi-laboratory.pro/</a>
      
      <p/>
      The tool is a core of the <a href='https://abi-laboratory.pro/tracker/'>ABI Tracker</a> and Upstream Tracker projects.
      
<table class='summary'><tr><td>
<div>Table of Contents</div>
<ul>
<li><a href="#Downloads">Downloads</a></li>
<li><a href="#License">License</a></li>
<li><a href="#Supported_Platforms">Supported Platforms</a></li>
<li><a href="#Dependencies">Dependencies</a></li>
<li><a href="#Installation">Installation</a></li>
<li><a href="#ABI_Dumper">Usage with ABI Dumper</a></li>
<li><a href="#Usage">Usage (Original)</a></li>
<li><a href="#Tutorial">Tutorial</a></li>
<li><a href="#Examples">Examples</a></li>
<li><a href="#BinaryProblems">Detectable Binary-Compatibility Problems</a></li>
<li><a href="#SourceProblems">Detectable Source-Compatibility Problems</a></li>
<li><a href="#TestSuite">Test Suite</a></li>
<li><a href="#Dump">Create ABI Dumps</a></li>
<li><a href="#Report">Report Format</a></li>
<li><a href="#Verdict">Verdict on Compatibility</a></li>
<li><a href="#Error">Error Codes</a></li>
<li><a href="#FAQ">FAQ</a></li>
<li><a href="#Similar">Similar Tools</a></li>
<li><a href="#Bugs">Bugs</a></li>
<li><a href="#Maintainers">Maintainers</a></li>
<li><a href="#ChangeLog">Changes</a></li>
<li><a href="#Articles">Articles</a></li>
</ul>
</td></tr></table>

<a name="Downloads"></a>
<h2>Downloads</h2>
<p>The latest release can be downloaded from <a href="https://github.com/lvc/abi-compliance-checker/releases">this page</a>.</p>

<p>Read-only access to the latest development version:</p>

<code class='code'>git clone https://github.com/lvc/abi-compliance-checker.git</code>

<a name="License"></a>
<h2>License</h2>
<p>This program is free software. You may use, redistribute and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/">GNU GPL</a> or <a href="http://www.gnu.org/licenses/">GNU LGPL</a></p>

<a name="Supported_Platforms"></a>
<h2>Supported Platforms</h2>
GNU/Linux, FreeBSD, Mac OS X, MS Windows.
    
<a name="Dependencies"></a>
<h2>Dependencies</h2>
<ul>
<li>
  G++ (3.0-4.7, 4.8.3 or newer)
</li>
<li>
  GNU Binutils (readelf, c++filt, objdump)
</li>
<li>
  Perl 5
</li>
<li>
  Ctags
</li>
<li>
  <a href="https://github.com/lvc/abi-dumper">ABI Dumper</a>
</li>
</ul>

WARNING: if you are using ccache program (i.e. gcc points to /usr/lib/ccache/gcc) then it should be newer than 3.1.2 or disabled. 
<p/>
On Mac OS X the tool also requires Xcode (g++, c++filt, nm and otool).
<p/>
On MS Windows the tool also requires MinGW, MS Visual C++ (dumpbin, undname, cl), Active Perl 5, adding of tool locations to the PATH and execution of vcvars64.bat script (C:\Microsoft Visual Studio 9.0\VC\bin\). 

<a name="Installation"></a>
<h2>Installation</h2>
<p>The tool is <b>ready-to-use</b> after extracting the archive.</p>

<p>You can also use a Makefile to install the tool into the system:</p>
<code class='code'>sudo make install prefix=PREFIX [/usr, /usr/local]</code>
<p>This command will install the <code>abi-compliance-checker</code> program into the <code>PREFIX/bin</code> system directory and private modules into the <code>PREFIX/share</code>.</p>

<p>To verify that the tool is installed correctly and it works on your host run:</p>
<code class='code'>cd tmp/</code>
<p>
<code class='code'>abi-compliance-checker -test</code>
</p>

<a name="ABI_Dumper"></a>
<h2>Usage with ABI Dumper</h2>
This new way is based on the analysis of the debug-info from binary objects. It's more reliable, faster and simple way. 
<p/>
The analyzed library should be compiled with "-g -Og" GCC options to contain DWARF debug info.
<p/>
Create ABI dumps for both library versions first using the <a href='https://github.com/lvc/abi-dumper'>ABI Dumper</a> tool:
<p/>
<code class='code'>abi-dumper OLD.so -o ABI-0.dump -lver 0</code>
<p/>
<code class='code'>abi-dumper NEW.so -o ABI-1.dump -lver 1</code>
<p/>
And then compare ABI dumps to create report:
<p/>
<code class='code'>abi-compliance-checker -l NAME -old ABI-0.dump -new ABI-1.dump</code>
<p/>
The compatibility report will be generated to:
<p/>
<code class='code'>compat_reports/NAME/V0_to_V1/compat_report.html</code>
<p/>
You can filter out private symbols from the ABI dumps by specifying of additional <code>-public-headers</code> option of the ABI Dumper tool. 

<a name="Usage"></a>
<h2>Usage (Original)</h2>
The original usage is based on the analysis of header files and shared objects (without debug-info). 
<p/>
You should provide <a href='Xml-Descriptor.html'>XML descriptors</a> for two library versions (<code>v1.xml</code> and <code>v2.xml</code> files) in order to run the analysis. Library descriptor is a simple XML-file that specifies version number, paths to header files and shared libraries and other optional information. An example of the descriptor is the following (<code>0.3.4.xml</code>):
<p/>
<div class='listing'>
<pre>
<span style='color:Green'>&lt;version&gt;</span>
    0.3.4
<span style='color:Green'>&lt;/version&gt;</span>

<span style='color:Green'>&lt;headers&gt;</span>
    /usr/local/libssh/0.3.4/include/
<span style='color:Green'>&lt;/headers&gt;</span>

<span style='color:Green'>&lt;libs&gt;</span>
    /usr/local/libssh/0.3.4/lib/
<span style='color:Green'>&lt;/libs&gt;</span>
</pre>
</div>
<p/>

Command to compare two versions of a library:
<p/>
<code class='code'>abi-compliance-checker -lib NAME -old V1.xml -new V2.xml</code>
<p/>
The compatibility report will be generated to:
<p/>
<code class='code'>compat_reports/NAME/V1_to_V2/compat_report.html</code>
<p/>

<a name="Tutorial"></a>
<h2>Tutorial</h2>
An excellent tutorial <a href='http://blog.famillecollet.com/post/2010/06/20/ABI-%3A-stability-check'>"ABI: stability check"</a> is available at Les RPM de Remi Blog. See also <a href='http://sourceware.org/glibc/wiki/Testing/ABI_checker'>ABI compliance checker Notes</a> at glibc wiki. 
<p/>

<a name="Examples"></a>
<h2>Examples</h2>
<table class='summary'>
<tr><th>Library</th><th>Versions</th><th>Report</th></tr>
<tr>
<td>libhttpd</td>
<td>2.2.31 vs 2.4.1</td>
<td><a href='http://abi-laboratory.pro/tracker/compat_report/httpd/2.2.31/2.4.1/58f6a/abi_compat_report.html'>report</a></td>
</tr>
<tr>
<td>libMagick++</td>
<td>6.9.0-0 vs 6.9.0-10</td>
<td><a href='http://abi-laboratory.pro/tracker/compat_report/imagemagick/6.9.0-0/6.9.0-10/c3418/abi_compat_report.html'>report</a></td>
</tr>
<tr>
<td>libssh</td>
<td>0.3.4 vs 0.3.91</td>
<td><a href='http://abi-laboratory.pro/tracker/compat_report/libssh/0.3.4/0.3.91/1f31d/abi_compat_report.html'>report</a></td>
</tr>
</table>
<p/>
See more report examples at <a href='http://abi-laboratory.pro/tracker/'>http://abi-laboratory.pro/tracker/</a>. 

<a name="BinaryProblems"></a>
<h2>Detectable Binary Compatibility Problems</h2>
<ul>
<li>

<b>Problems with Data Types</b>
<ul>
    <li>
    Structures and Classes
        <ul>
            <li>
                added/removed fields (change of a memory layout)
            </li>
            <li>
                change of size
            </li>
            <li>
                changed order of fields
            </li>
            <li>
                change of a field type
            </li>
            <li>
                changes in fields (recursive analysis)
            </li>
        </ul>
    </li>
    <li>
    Classes
        <ul>
            <li>
                added/removed virtual functions (change of a v-table layout)
            </li>
            <li>
                change of virtual function position
            </li>
            <li>
                overridden virtual functions
            </li>
            <li>
                added/removed base classes
            </li>
            <li>
                changes in base classes (recursive analysis)
            </li>
        </ul>
    </li>
    <li>
    Unions
        <ul>
            <li>
                added/removed fields
            </li>
            <li>
                change of size
            </li>
            <li>
                change of a field type
            </li>
            <li>
                changes in fields (recursive analysis)
            </li>
        </ul>
    </li>
    <li>
    Enumerations
        <ul>
            <li>
                change of a member value
            </li>
            <li>
                removed/renamed members
                
                <br/>
                <br/>
            </li>
        </ul>
    </li>
</ul>

</li>
<li>

<b>Problems with Symbols</b>
<ul>
    <li>
        removed symbols (functions or global data)
    </li>
    <li>
        added/removed parameters
    </li>
    <li>
        change of a parameter/return value type
    </li>
    <li>
        change of default parameter value
    </li>
    <li>
        renamed parameters
    </li>
    <li>
        incorrect version change
    </li>
    <li>
        changed attributes (const, volatile, static, etc.)
        
        <br/>
        <br/>
    </li>
</ul>

</li>
<li>
<b>Problems with Constants (#defines)</b>
<ul>
<li>
    changed value 
</li>
</ul>

</li>
</ul>
<p/>

See <a href='https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C++'>"Binary Compatibility Issues With C++"</a> article from KDE TechBase for more info. 

<a name="SourceProblems"></a>
<h2>Detectable Source Compatibility Problems</h2>
<ul>
<li>

<b>Problems with Data Types</b>
<ul>
    <li>
    Structures, Classes and Unions
        <ul>
            <li>
                removed/renamed fields
            </li>
            <li>
                change of a field type
            </li>
            <li>
                 changes in fields (recursive analysis)
            </li>
        </ul>
    </li>
    <li>
    Classes
        <ul>
            <li>
                added/removed base classes
            </li>
            <li>
                change access level of a field or method
            </li>
            <li>
                 added pure virtual methods
            </li>
        </ul>
    </li>
    <li>
    Enumerations
        <ul>
            <li>
                removed/renamed members
                
                <br/>
                <br/>
            </li>
        </ul>
    </li>
</ul>
</li>

<li>

<b>Problems with Symbols</b>
<ul>
    <li>
        removed symbols (functions or global data) 
    </li>
    <li>
        added/removed parameters 
    </li>
    <li>
        change of a parameter type 
    </li>
    <li>
        removed default value of parameter
    </li>
    <li>
        change of return value type 
    </li>
    <li>
        changed attributes (const, static, etc.) 
    </li>
</ul>

</li>

</ul>

<a name="TestSuite"></a>
<h2>Test Suite</h2>
The tool is tested properly in the <a href='https://abi-laboratory.pro/tracker/'>ABI Tracker</a> and Upstream Tracker projects, by the community and by the internal test suite:
<p/>
<code class='code'>abi-compliance-checker -test</code>
<p/>
There are about 100 basic tests for C and about 200 basic tests for C++ API/ABI breaks.

<a name="Dump"></a>
<h2>Create ABI Dumps</h2>
The library ABI is a representation of the library API at the binary level. The ABI dump is a dump of the model of the ABI used in the tool.
<p/>
The ABI dump consists of:

<ul>

<li>
    <b>Types Information</b>
    <ul>
        <li>
            Attributes (name, size, header, access, base types, etc.)
        </li>
        <li>
            Fields (name, type, size, position, alignment, access, specifiers, etc.)
        </li>
        <li>
            V-table structure (offsets, entries)
        </li>
        <li>
            Etc. 
        </li>
    </ul>
</li>

<li>
    <b>Symbols Information</b>
    <ul>
        <li>
            Attributes (name, mangled name, header, access, specifiers, etc.)
        </li>
        <li>
            Parameters (name, type, position, alignment, etc.)
        </li>
        <li>
            Etc.
        </li>
    </ul>
</li>

<li>
    Etc.
</li>

</ul>

The ABI dump can be used to create a snapshot of a library ABI in the particular environment and then compare it with any other state of the ABI changed due to changes in the environment (compiler version, external libraries, etc.) or changes in the library API (header files).

<p/>
The typical case is the comparing of two versions of the same library that require incompatible states of the environment (i.e. these versions cannot be installed simultaneously). In this case one can create a dump for one version of the library and then switch the environment and create ABI dump for other version of the library. Two ABI dumps can be compared by the tool to create the API compatibility report.
<p/>
To create an ABI dump use <code>-dump</code> option:
<p/>
<code class='code'>abi-compliance-checker -lib NAME -dump VER.xml</code>
<p/>
The ABI dump will be generated to:
<p/>
<code class='code'>abi_dumps/NAME/NAME_VER.abi.tar.gz</code>
<p/>
To compare ABI dumps pass them as the descriptors:
<p/>
<code class='code'>abi-compliance-checker -lib NAME -old V1.abi.tar.gz -new V2.abi.tar.gz</code>

<a name="Report"></a>
<h2>Report Format</h2>
The tool supports two formats of a compatibility report: HTML (default) and XML. To generate XML report you should specify <code>-xml</code> additional option.
<p/>
The report consists of:

<ul>
    <li>
        <b>Test Info</b> - The library name and compared version numbers. Environment info: GCC version and CPU type.
    </li>
    <li>
        <b>Test Results</b> - Verdict on compatibility. Number of header files, shared libraries, symbols and data types checked by the tool.
    </li>
    <li>
        <b>Problem Summary</b> - Classification of compatibility problems.
    </li>
    <li>
        <b>Added Symbols</b> - The list of added symbols.
    </li>
    <li>
        <b>Removed Symbols</b> - The list of removed symbols.
    </li>
    <li>
        <b>Problems with Data Types</b> - The list of compatibility problems caused by changes in data types (divided by the severity level: High, Medium and Low). List of affected symbols.
    </li>
    <li>
        <b>Problems with Symbols</b> - The list of compatibility problems caused by changes in symbol parameters or attributes (divided by the severity level).
    </li>
    <li>
        <b>Problems with Constants</b> - The list of changed constants (#defines).
    </li>
    <li>
        <b>Other Changes in Data Types</b> - The list of compatible changes in data types.
    </li>
    <li>
        <b>Other Changes in Symbols</b> - The list of compatible changes in symbols.
    </li>
</ul>

<a name="Verdict"></a>
<h2>Verdict on Compatibility</h2>
If the tool detects problems with high or medium level of severity or at least one removed symbol then the compatibility verdict is <b>incompatible</b> (otherwise <b>compatible</b>). Low-severity problems can be considered as <b>warnings</b> and don't affect the compatibility verdict unless the <code>-strict</code> option is specified.

<a name="Error"></a>
<h2>Error Codes</h2>
<table class='summary'>
<tr><th>Code</th><th>Meaning</th></tr>
<tr><td>0</td><td>Compatible. The tool has run without any errors.</td></tr>
<tr><td>1</td><td>Incompatible. The tool has run without any errors.</td></tr>
<tr><td>2</td><td>Common error code (undifferentiated).</td></tr>
<tr><td>3</td><td>A system command is not found.</td></tr>
<tr><td>4</td><td>Cannot access input files.</td></tr>
<tr><td>5</td><td>Cannot compile header files.</td></tr>
<tr><td>6</td><td>Headers have been compiled with minor errors.</td></tr>
<tr><td>7</td><td>Invalid input ABI dump.</td></tr>
<tr><td>8</td><td>Unsupported version of input ABI dump.</td></tr>
<tr><td>9</td><td>Cannot find a module.</td></tr>
<tr><td>10</td><td>Empty intersection between headers and shared objects.</td></tr>
<tr><td>11</td><td>Empty set of symbols in headers.</td></tr>
</table>

<a name="FAQ"></a>
<h2>FAQ</h2>
<ul>
    <li>
        <b>What is an ABI and how does it differ from an API?</b>
        <p/>
        An Application Binary Interface (ABI) is the set of supported run-time interfaces provided by a software component or set of components for applications to use, whereas an Application Programming Interface (API) is the set of build-time interfaces. The ABI may be defined by the formula: ABI = API + compiler ABI.
    </li>
    <li>
        <b>Why does this tool need both shared libraries and header files to check ABI compliance?</b>
        <p/>
        Without header files it is impossible to determine public symbols in ABI and data type definitions. Without shared libraries it is impossible to determine exported symbols in the ABI of the target library and also impossible to detect added/removed symbols. 
    </li>
</ul>

<a name="Similar"></a>
<h2>Similar Tools </h2>
<ul>
    <li>
         <b>icheck</b> - C interface ABI/API checker.
    </li>
    <li>
         <b>BCS</b> - The Symbian binary compatibility suite.
    </li>
    <li>
         <b>shlib-compat</b> - ABI compatibility checker that uses DWARF debug info.
    </li>
    <li>
         <b>qbic</b> - A tool to check for binary incompatibilities in Qt4 Toolkit.
    </li>
    <li>
         <b>libabigail</b> - A C++ library for ABI analysis.
    </li>
    <li>
         <b>chkshlib, cmpdylib, cmpshlib</b> - Tools to compare binary symbols.
    </li>
</ul>

<a name="Bugs"></a>
<h2>Bugs</h2>
Please post bug reports, feature requests and questions to the <a href="https://github.com/lvc/abi-compliance-checker/issues">issue tracker</a>.
<p/>

<a name="Maintainers"></a>
<h2>Maintainers</h2>
The tool is developed by <a href="https://www.linkedin.com/in/andreyponomarenko">Andrey Ponomarenko</a>.

<a name="ChangeLog"></a>
<h2>Changes</h2>
You can find changelog <a href='Changelog.html'>here</a>.

<a name="Articles"></a>
<h2>Articles</h2>

<ul>
    <li>
        <a href='https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C++'>"Binary Compatibility Issues With C++"</a>, KDE TechBase 
    </li>
    <li>
        <a href='https://community.kde.org/Policies/Binary_Compatibility_Examples'>"Binary Compatibility Examples"</a>, KDE TechBase 
    </li>
    <li>
        <a href='https://www.computer.org/csdl/proceedings/valid/2010/4146/00/4146a057-abs.html'>"Automated Verification of Shared Libraries for Backward Binary Compatibility"</a>, A. Ponomarenko and V. Rubanov, VALID 2010
    </li>
    <li>
        <a href='http://www.springerlink.com/content/905067689q7n0166/'>"Backward compatibility of software interfaces: Steps towards automatic verification"</a>, A. Ponomarenko and V. Rubanov, Programming and Computer Software 2012
    </li>
    <li>
        <a href='http://refspecs.linux-foundation.org/cxxabi-1.83.html'>"Itanium C++ ABI"</a>, linux-foundation.org 
    </li>
    <li>
        <a href='http://www.ros.org/reps/rep-0009.html'>"ABI Compatibility"</a>, Josh Faust 
    </li>
    <li>
        <a href='http://blog.famillecollet.com/post/2010/06/20/ABI-%3A-stability-check'>"ABI : stability check"</a>, Les RPM de Remi - Blog 
    </li>
    <li>
        <a href='http://www.agner.org/optimize/calling_conventions.pdf'>"Calling conventions for different C++ compilers and operating systems"</a>, Agner Fog 
    </li>
    <li>
        <a href='http://www.angelcode.com/dev/callconv/callconv.html'>"Calling conventions on the x86 platform"</a>, Andreas Jonsson
    </li>
    <li>
        <a href='http://blog.qt.digia.com/blog/2009/08/12/some-thoughts-on-binary-compatibility/'>"Some thoughts on binary compatibility"</a>, Thiago Macieira
    </li>
    <li>
        <a href='http://syrcose.ispras.ru/2009/files/02_paper.pdf'>"Binary Compatibility of C++ shared libraries on GNU/Linux"</a>, Pavel Shved, Denis Silakov
    </li>
    <li>
        <a href='http://www.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid_html/'>"Library Interface Versioning in Solaris and Linux"</a>, David J. Brown and Karl Runge
    </li>
    <li>
        <a href='http://h21007.www2.hp.com/portal/download/files/prot/files/STK/pdfs/V_4version.pdf'>"Steps to Version Your Shared Library"</a>, hp.com
    </li>
    <li>
        <a href='http://chadaustin.me/cppinterface.html'>"Binary-compatible C++ Interfaces"</a>, Chad Austin
    </li>
    <li>
        <a href='http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html'>"ABI Policy and Guidelines"</a>, gnu.org
    </li>
    <li>
        <a href='http://gcc.gnu.org/onlinedocs/gcc/Compatibility.html'>"Binary Compatibility"</a>, gnu.org
    </li>
    <li>
        <a href='http://www.oracle.com/technetwork/articles/servers-storage-dev/stablecplusplusabi-333927.html'>"Stability of the C++ ABI: Evolution of a Programing Language"</a>, Stephen Clamage
    </li>
    <li>
        <a href='http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html#binarycompat'>"When binary compatibility breaks"</a>, Debian Library Packaging guide
    </li>
    <li>
        <a href='http://techbase.kde.org/Policies/Library_Code_Policy'>"Library Code Policy"</a>, KDE TechBase
    </li>
    <li>
        <a href='http://people.redhat.com/drepper/dsohowto.pdf'>"How To Write Shared Libraries"</a>, Ulrich Drepper
    </li>
    <li>
        <a href='http://tldp.org/HOWTO/Program-Library-HOWTO/'>"Program Library HOWTO"</a>, linux.org
    </li>
    <li>
        <a href='http://plan99.net/~mike/writing-shared-libraries.html'>"Writing shared libraries"</a>, Mike Hearn
    </li>
    <li>
        <a href='http://www.ayukov.com/essays/linuxdll.html'>"Shared libraries in Linux: growing pains or fundamental problem?"</a>, Sergey Ayukov
    </li>
    <li>
        <a href='http://c2.com/cgi/wiki?FragileBinaryInterfaceProblem'>"Fragile Binary Interface Problem"</a>, Steven Newton
    </li>
    <li>
        <a href='http://www.oocities.org/mrshrap/linker.html'>"The amazing world of library incompatibility"</a>, oocities.org
    </li>
    <li>
        <a href='http://www.elpauer.org/?p=230'>"ABI compatibility in C++"</a>, elpauer.org
    </li>
    <li>
        <a href='http://blogs.gentoo.org/mgorny/2012/08/20/the-impact-of-cxx-templates-on-library-abi/'>"The impact of C++ templates on library ABI"</a>, Michał Górny
    </li>
    <li>
        <a href='http://sourceware.org/glibc/wiki/Testing/ABI_checker'>"ABI compliance checker Notes"</a>, sourceware.org
    </li>
    <li>
        <a href='http://developer.symbian.org/wiki/index.php/Preserving_Compatibility'>"Preserving Compatibility"</a>, symbian.org
    </li>
    <li>
        <a href='http://www.macieira.org/blog/2012/01/architectures-and-abis-detailed/'>"Architectures and ABIs detailed"</a>, Thiago Macieira's blog
    </li>
    <li>
        <a href='http://accu.org/index.php/journals/1718'>"Interface Versioning in C++"</a>, ACCU
    </li>
    <li>
        Processor ABI standards: <a href='http://refspecs.linuxbase.org/elf/abi386-4.pdf'>Intel386</a>, <a href='http://www.x86-64.org/documentation/abi.pdf'>AMD64</a>, <a href='http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf'>ARM</a>, <a href='http://refspecs.linuxbase.org/elf/elfspec_ppc.pdf'>PowerPC</a>, <a href='http://download.boulder.ibm.com/ibmdl/pub/software/dw/linux390/docu/l390abi0.pdf'> S/390</a>, <a href='http://refspecs.linuxbase.org/elf/IA64-SysV-psABI.pdf'>Itanium</a>, <a href='http://refspecs.linuxbase.org/elf/mipsabi.pdf'>MIPS</a>, <a href='sparc.org/wp-content/uploads/2014/01/psABI3rd.pdf.gz'>SPARC</a>, <a href='http://refspecs.linuxbase.org/elf/elf-pa.pdf'>PA-RISK</a>, <a href='http://www.linux-m32r.org/cmn/m32r/M32R-elf-abi.pdf'>M32R</a>
    </li>
    <li>
        <a href='https://refspecs.linuxbase.org/elf/gabi41.pdf'>"Generic ABI Standard"</a>, <a href='http://refspecs.linuxbase.org/elf/'>"ELF and ABI Standards"</a>, freestandards.org
    </li>
    <li>
        <a href='http://events.linuxfoundation.org/sites/events/files/slides/Binary_Compatibility_for_library_devs.pdf'>"Binary compatibility for library developers"</a>, <a href='https://www.youtube.com/watch?v=PHrXGHDd9no'>Video</a>, Thiago Macieira
    </li>
    <li>
        <a href='http://debconf14-video.debian.net/video/286/acc-for-abi-breaks'>"ACC for abi breaks"</a>, Dimitri Ledkov
    </li>
</ul>

<div class="footer">
    get the source code on GitHub : <a href="https://github.com/lvc/abi-compliance-checker">lvc/abi-compliance-checker</a>
</div>

<br/>
<br/>

</div>
</body>
</html>
