In computing, the System Object Model (SOM) is a proprietary executable
file format
A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. File formats may be either proprietary or free.
Some file formats ...
developed by
Hewlett-Packard for its
HP-UX and
MPE/ix operating systems.
In particular, SOM is the native format used for
32-bit application
executables,
object code
In computing, object code or object module is the product of a compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ...
, and
shared libraries
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and su ...
running under the
PA-RISC
PA-RISC is an instruction set architecture (ISA) developed by Hewlett-Packard. As the name implies, it is a reduced instruction set computer (RISC) architecture, where the PA stands for Precision Architecture. The design is also referred to as ...
family of processors.
With the introduction of
64-bit
In computer architecture, 64-bit Integer (computer science), integers, memory addresses, or other Data (computing), data units are those that are 64 bits wide. Also, 64-bit central processing unit, CPUs and arithmetic logic unit, ALUs are those ...
processors, Hewlett Packard adopted the
Executable and Linkable Format
In computing, the Executable and Linkable FormatTool Interface Standard (TIS) Portable Formats SpecificationVersion 1.1'' (October 1993) (ELF, formerly named Extensible Linking Format), is a common standard file format for executable files, obj ...
(ELF) format to represent the wider 64-bit program code, while still using SOM for applications running in 32-bit mode. Later, with the introduction of the
Itanium
Itanium ( ) is a discontinued family of 64-bit Intel microprocessors that implement the Intel Itanium architecture (formerly called IA-64). Launched in June 2001, Intel marketed the processors for enterprise servers and high-performance computin ...
processor family, HP-UX has abandoned the SOM format in favor of ELF for both 32-bit and 64-bit application code.
In HP-UX the SOM file format is sometimes called the a.out format and is described by
C programming language
''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
structures in the header file "/usr/include/a.out.h". However the SOM format is technically not the same as the standard
a.out format used by many other Unix operating systems.
Overview of the SOM file format
A SOM file consists of a fixed-size header record followed by a number of sections, some of which are optional. The header always appears at the beginning of the file and contains the byte offsets and sizes of where the other sections are located within the file. Except for the header the other sections may appear anywhere in the file, although the typical layout of a SOM file (assuming all sections are present) is as follows:
* Header Record
* Auxiliary Header Record
* Space Records
* Subspace Records
* Loader Fixup Records
* Space Strings
* Symbol Records
* Fixup Records
* Symbol Strings
* Compiler Records
* Data for Loadable Spaces
* Data for Unloadable Spaces
Numeric fields are stored in
big endian
In computing, endianness, also known as byte sex, is the order or sequence of bytes of a word of digital data in computer memory. Endianness is primarily expressed as big-endian (BE) or little-endian (LE). A big-endian system stores the most sig ...
byte order, the native byte order of the PA-RISC, with most being 32-bit wide. Character strings are generally encoded in 8-bit
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because of ...
and both prefixed with a 32-bit length indicator as well as being
null-terminated, like
C string
C, or c, is the third letter in the Latin alphabet, used in the modern English alphabet, the alphabets of other western European languages and others worldwide. Its name in English is ''cee'' (pronounced ), plural ''cees''.
History
"C" ...
s. Most records are word-aligned (start at even-byte offsets) with padding introduced as necessary.
See also
*
Comparison of executable file formats
This is a comparison of binary executable file formats which, once loaded by a suitable executable loader, can be directly executed by the CPU rather than being interpreted by software. In addition to the binary application code, the executables ma ...
External links
''HP-UX a.out(4) manual page'' Hewlett-Packard
''The 32-bit PA-RISC Run-time Architecture Document, HP-UX 11.0 Version 1.0'' Hewlett-Packard, 1997
''The 32-bit PA-RISC Run-time Architecture Document, HP-UX 10.20 version 3.0'' Hewlett-Packard, 1997. Also available a
parisc-linux.org Hewlett-Packard (online)
{{Executables
Executable file formats
HP software