SourceForge Logo

Topics
What is abicheck
What is an ABI
Documentation
Contact Info
Related Links
Project Page
Mailing Lists
CVS web interface
Source code



Contents


1. What is abicheck?
2. What is an ABI and how does it differ from an API?
3. What license is abicheck released under? Who owns the copyright?
4. What is the relationship between abicheck and the Linux Standards Base tool lsbappchk?
5. What is the relationship between abicheck and Sun's ABI tool appcert?
6. What is Sun's role in all this?


1. What is abicheck?


abicheck is a utility for checking an application binary's use of library interfaces against the Application Binary Interface (ABI) defined for those libraries. Use of non-ABI interfaces puts the application at risk from binary incompatibility with later versions of the libraries; abicheck spots such potential problems.

abicheck was inspired by Sun's work on defining the Solaris ABI, and its technology for checking whether application binaries conform to that ABI (see the Sun ABI website for more details). abicheck is the nucleus for such an ABI effort in the Open Source community. It is currently in the prototype/planning stage; initial work has been done by members of Sun Microsystems' Solaris ABI Project. The abicheck source is released under the LGPL.


2. What is an ABI and how does it differ from an API?


An Application Binary Interface (ABI) is the set of supported runtime interfaces provided by a software component or set of components for applications to use, whereas an API is the set of build-time interfaces. It is thus the ABI that actually determines whether or not an application and system are binary compatible.

The most obvious and important ABI is that provided by a shared object (dynamically linked library) since the actual linking is determined at runtime; stability can only be achieved when the library and the applications which use its interfaces adhere to a common stable ABI. As a useful first approximation, an ABI definition should indicate which interfaces are "public", i.e., documented and stable, and those which are "private", i.e., not guaranteed to remain compatible in future releases.

There currently are draft ABI's for glibc and GNOME. Public comment on them is welcomed.


3. What license is abicheck released under? Who owns the copyright?


abicheck is released under the LGPL. The copyright to the initial code release is held by Sun Microsystems, Inc. The copyrights to additional contributions will be held by their respective authors.


4. What is the relationship between abicheck and the Linux Standards Base tool lsbappchk?


The Linux Standards Base is defining a set of core interfaces for all Linux systems to support. As part of this activity, they are developing several tools, one of which, lsbappchk, checks an application to see if it is using any interfaces other than those specified in the LSB definition (use of such interfaces may affect the application's portability). Just as the interfaces defined in the Unix System V ABI are the core of the Solaris ABI, the interfaces in the LSB definition would be the core of a future Linux ABI checked by abicheck.

Put another way, lsbappchk only checks whether an application uses interfaces outside of the LSB ones, regardless of whether those interfaces are public or private, while abicheck only checks whether an application uses private interfaces; it doesn't distinguish between LSB and non-LSB public interfaces.


5. What is the relationship between abicheck and Sun's ABI tool appcert?


abicheck was inspired by appcert, and does essentially the same thing. Appcert is a more complex program and highly tailored to Solaris because it is used to support Sun's developer programs. In order for those working on abicheck to benefit from the work that went into appcert, Sun has released the source code to appcert under the Sun Public License, a Mozilla-like license approved by the Open Source Initiative. More details can be found at the Appcert Source page on Sun's Solaris ABI Program website.


6. What is Sun's role in all this?


Sun is committed to ensuring binary compatibility for Solaris applications by means of a well-defined Solaris ABI and tools to help developers write ABI-compliant (and thus stable) applications. Since the experience it has gained in doing this for Solaris may be of use to the open source community, Sun is happy to contribute by making available the prototype for the next generation of ABI technology, as well as the source for its ABI tool, appcert.

The project on SourceForge has been set up by members of the Solaris ABI Program. They intend to be contributors to, not controllers of, abicheck's further development.


Last Updated 2002-01-28.