Jump to content

System Object Model (file format)

From Alfawiki
Adapted from the English Wikipedia article System Object Model (file format), available under CC BY-SA 4.0Updated 8 August 2025
System Object Model (SOM)
Company typeProprietary file format
IndustryComputing / Software
FounderHewlett-Packard
ProductsExecutable files, object code, shared libraries for PA-RISC
OwnerHewlett-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