System Object Model (file format)
| Company type | Proprietary file format |
|---|---|
| Industry | Computing / Software |
| Founder | Hewlett-Packard |
| Products | Executable files, object code, shared libraries for PA-RISC |
| Owner | Hewlett-Packard |
In the realm of computing, the System Object Model (SOM) represents a proprietary executable file format created by Hewlett-Packard specifically for its HP-UX and MPE/ix operating environments. This format functions as the standard container for 32-bit application executable files, object code, and shared libraries designed for the PA-RISC processor architecture.
As 64-bit processors emerged, Hewlett-Packard adopted the Executable and Linkable Format (ELF) to handle 64-bit binaries, while continuing to utilize SOM for existing 32-bit software. Subsequently, with the rollout of the Itanium processor series, HP-UX fully transitioned to ELF for both 32-bit and 64-bit executables, phasing out SOM entirely.
Within HP-UX, SOM is occasionally identified as the a.out format and is specified through data structures located in "/usr/include/a.out.h". Despite this naming, it is technically distinct from the conventional a.out format found on other Unix variants.
SOM file format details
A SOM file initiates with a fixed-length header record that specifies byte offsets and sizes corresponding to various segments of the file. These segments, some optional, may be positioned arbitrarily but generally follow this sequence:
- 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 values are represented in big endian format native to PA-RISC processors and are predominantly 32 bits wide. Character data uses 8-bit ASCII encoding, preceded by a 32-bit length field and terminated with a null character consistent with C-style strings. Most segments are aligned on word boundaries with padding applied as necessary.
See also
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 at parisc-linux.org
- HP-UX Software Transition Kit Glossary, Hewlett-Packard (online)
- PA-RISC 1.1 Architecture Specifications