Product SiteDocumentation Site

4.2.2. ABI Compatibility

Binary compatibility enables a single compiled binary to operate correctly on multiple instances of an operating environment that share a common hardware architecture (whether that architecture support is implemented in native hardware or a virtualization layer), but a different underlying software architecture.
Binary compatibility is defined by an Application Binary Interface (ABI). The ABI is a set of runtime conventions adhered to by all tools which deal with a compiled binary representation of a program. Examples of such tools include compilers, linkers, runtime libraries, and the operating system itself. The ABI includes not only the binary file formats, but also the semantics of library functions which are used by applications.
Similar to the case of source compatibility, binary compatibility ABIs can be classified into the following:
Red Hat Enterprise Linux by and large seeks to implement binary compatibility with a de jure industry standard developed for GNU/Linux operating environments, the Linux Standard Base (LSB). Red Hat Enterprise Linux 6 implements LSB version 4.
Red Hat Enterprise Linux characterizes ABI compatibility four ways, with the most compatible ABIs scored with the smallest number in the following list:
  1. No changes made. Consumer should see no changes.
  2. Versioned additions only, no removals. New structures, fields, header files, and exported interfaces may be added as long as additional techniques are used to effectively version any new symbols. Applicable mechanisms for versioning external symbols include the use of compiler visibility support (via pragma, annotation, or suitable flag), use of language-specific features, or use of external link maps. Many of these techniques can be combined.
  3. Incompatible, but a separate compatibility library is packaged so that previously linked binaries can run without modification. Use is mutually exclusive: either the compatibility package is used, or the current package is used.
  4. Anything goes. Incompatible, with no recourse.
In the following sections, these ABI classification levels will be detailed for select components of Red Hat Enterprise Linux.