HP-UX Reference (11i v3 07/02) - 4 File Formats (vol 8)
a
a.out(4) a.out(4)
struct space_dictionary_record {
union name_pt name; /* index to space name */
unsigned int is_loadable: 1; /* space is loadable */
unsigned int is_defined: 1; /* space is defined within file */
unsigned int is_private: 1; /* space is not sharable */
unsigned int has_intermediate_code: 1; /* contains intermediate
code */
unsigned int is_tspecific: 1; /* space is $thread_specific$ */
unsigned int reserved: 11; /* reserved */
unsigned int sort_key: 8; /* sort key for space */
unsigned int reserved2: 8; /* reserved */
int space_number; /* space index */
int subspace_index; /* index to first subspace */
unsigned int subspace_quantity; /* # of subspaces in space */
int loader_fix_index; /* index into loader fixup array */
unsigned int loader_fix_quantity; /* # of loader fixups in space */
int init_pointer_index; /* index into init pointer array */
unsigned int init_pointer_quantity; /* # of init ptrs */
};
The strings for the space names are contained in the space strings table, which is located by a pointer in the
file header. Each entry in the space strings table is preceded by a 4-byte integer that defines the length of
the string, and is terminated by one to five null characters to pad the string out to a word boundary.
Indices to this table are relative to the start of the table, and point to the first byte of the string (not the
preceding length word). The union defined below is used for all such string pointers; the character pointer
is defined for programs that read the string table into memory and wish to relocate in-memory copies of
space records.
union name_pt {
char *n_name;
unsigned int n_strx;
};
Subspace Dictionary
The subspace dictionary consists of a sequence of subspace records, as defined in <scnhdr.h> .Strings
for subspace names are contained in the space strings table.
struct subspace_dictionary_record {
int space_index; /* index into space dictionary */
unsigned int access_control_bits: 7; /* access and priv levels
of subsp */
unsigned int memory_resident: 1; /* lock in memory during exec */
unsigned int dup_common: 1; /* duplicate data symbols allowed */
unsigned int is_common: 1; /* initialized common block */
unsigned int is_loadable: 1; /* subspace is loadable */
unsigned int quadrant: 2; /* quadrant in space subsp
should reside in */
unsigned int initially_frozen: 1; /* lock in memory
when OS booted */
unsigned int is_first: 1; /* must be first subspace */
unsigned int code_only: 1; /* subspace contains only code */
unsigned int sort_key: 8; /* subspace sort key */
unsigned int replicate_init: 1; /* init values to be replicated
to fill subsp len */
unsigned int continuation: 1; /* subspace is a continuation */
unsigned int is_tspecific: 1; /* subspace contains TLS */
unsigned int reserved: 5; /* reserved */
int file_loc_init_value; /* file location or init value */
unsigned int initialization_length; /* length of initialization */
unsigned int subspace_start; /* starting offset */
unsigned int subspace_length; /* total subspace length */
unsigned int reserved2: 16; /* reserved */
unsigned int alignment: 16; /* alignment required */
union name_pt name; /* index of subspace name */
24 Hewlett-Packard Company − 5 − HP-UX 11i Version 3: February 2007