Skip Navigation Links | |
Exit Print View | |
Programming Interfaces Guide Oracle Solaris 11.1 Information Library |
2. Session Description Protocol API
8. Programming With XTI and TLI
10. Transport Selection and Name-to-Address Mapping
11. Real-time Programming and Administration
12. The Oracle Solaris ABI and ABI Tools
Defining the Oracle Solaris ABI
Symbol Versioning in Oracle Solaris Libraries
Using Symbol Versioning to Label the Oracle Solaris ABI
Using appcert for Application Triage
Correcting Problems Reported by appcert
The Oracle Solaris ABI is the set of supported run-time interfaces that are available for an application to use with the Oracle Solaris operating system. The most important components of the ABI are in the following list:
The interfaces provided by the Oracle Solaris system libraries, which are documented in section 3 of the man pages
The interfaces provided by the Oracle Solaris kernel system calls, which are documented in section 2 of the man pages
The locations and formats of various system files and directories, which are documented in section 4 of the man pages
The input and output syntax and semantics of Oracle Solaris utilities, which are documented in section 1 of the man pages
The main component of the Oracle Solaris ABI is the set of system library interfaces. The term ABI in this chapter refers only to that component. The ABI contains exclusively C language interfaces, as C is the only language for which the Oracle Solaris operating system provides interfaces.
C source code that is written to the Oracle Solaris API (Application Programming Interface) is transformed by the C compiler into a binary for one of four ABI versions. The versions are:
32-bit SPARC
64-bit SPARC
32-bit x86
x64
While the ABI is very similar to the API, the source compilation process introduces several important differences:
Compiler directives such as #define can alter or replace source-level constructs. The resulting binary might lack a symbol present in the source or include a symbol not present in the source.
The compiler might generate processor-specific symbols, such as arithmetic instructions, which augment or replace source constructs.
The compiler's binary layout might be specific to that compiler and the versions of the source language which the compiler accepts. In such cases, identical code compiled with different compilers might produce incompatible binaries.
For these reasons, source-level (API) compatibility does not provide a sufficient expectation of binary compatibility across Oracle Solaris releases.
The Oracle Solaris ABI is made up of the supported interfaces provided by the operating system. Some of the interfaces that are available in the system are intended for the exclusive use of the operating system. These exclusive interfaces are not available for use by an application. Prior to the SunOS 5.6 release, all of the interfaces in Oracle Solaris libraries were available for application developers to use. With the library symbol scoping technology available in the Oracle Solaris link editor, interfaces not intended for use outside of a library have their scope reduced to be purely local to the library. See the Linker and Libraries Guide for details. Due to system requirements, not all private interfaces can have such a reduced scope. These interfaces are labeled private, and are not included in the Oracle Solaris ABI.