Go to main content

Oracle® Solaris 11.3 Programming Interfaces Guide

Exit Print View

Updated: April 2019
 
 

What Is the Oracle Solaris ABI?

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 the set of system library interfaces. The ABI contains C language interfaces, as Oracle Solaris provides interfaces only for C language.

    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. For more information, see Oracle Solaris 11.3 Linkers and Libraries Guide. Due to system requirements, not all private interfaces can have a reduced scope. These interfaces are labeled private, and are not included in the Oracle Solaris ABI.