HP-UX Reference (11i v2 03/08) - 4 File Formats (vol 8)
a
a.out(4) a.out(4)
int fixup_request_index; /* index to first fixup */
unsigned int fixup_request_quantity; /* # of fixup requests */
};
Symbol Table
The symbol table consists of a sequence of entries described by the structure shown below, from
<syms.h>. Strings for symbol and qualifier names are contained in the symbol strings table, whose
structure is identical with the space strings table.
struct symbol_dictionary_record {
unsigned int hidden: 1; /* symbol not visible to loader */
unsigned int secondary_def: 1; /* secondary def symbol */
unsigned int symbol_type: 6; /* symbol type */
unsigned int symbol_scope: 4; /* symbol value */
unsigned int check_level: 3; /* type checking level */
unsigned int must_qualify: 1; /* qualifier required */
unsigned int initially_frozen: 1; /* lock in memory
when OS booted */
unsigned int memory_resident: 1; /* lock in memory during exec */
unsigned int is_common: 1; /* common block */
unsigned int dup_common: 1; /* duplicate data symbols allowed */
unsigned int xleast: 2; /* MPE-only */
unsigned int arg_reloc: 10; /* parameter relocation bits */
union name_pt name; /* index to symbol name */
union name_pt qualifier_name; /* index to qual name */
unsigned int symbol_info; /* subspace index */
unsigned int symbol_value; /* symbol value */
};
/* Values for symbol_type */
#define ST_NULL 0 /* unused symbol entry */
#define ST_ABSOLUTE 1 /* non-relocatable symbol */
#define ST_DATA 2 /* initialized data symbol */
#define ST_CODE 3 /* generic code symbol */
#define ST_PRI_PROG 4 /* program entry point */
#define ST_SEC_PROG 5 /* secondary prog entry point*/
#define ST_ENTRY 6 /* procedure entry point */
#define ST_STORAGE 7 /* storage request */
#define ST_STUB 8 /* MPE-only */
#define ST_MODULE 9 /* Pascal module name */
#define ST_SYM_EXT 10 /* symbol extension record */
#define ST_ARG_EXT 11 /* argument extension record */
#define ST_MILLICODE 12 /* millicode entry point */
#define ST_PLABEL 13 /* MPE-only */
#define ST_OCT_DIS 14 /* Used by OCT only--ptr to translated code */
#define ST_MILLI_EXT 15 /* address of external millicode */
#define ST_TSTORAGE 16 /* TLS common symbol */
/* Values for symbol_scope */
#define SS_UNSAT 0 /* unsatisfied reference */
#define SS_EXTERNAL 1 /* import request to external symbol */
#define SS_LOCAL 2 /* local symbol */
#define SS_UNIVERSAL 3 /* global symbol */
The meaning of the symbol value depends on the symbol type. For the code symbols (generic code, pro-
gram entry points, procedure and millicode entry points), the low-order two bits of the symbol value
encode the execution privilege level, which is not used on HP-UX, but is generally set to 3. The symbol
value with those bits masked out is the address of the symbol (which is always a multiple of 4). For data
symbols, the symbol value is simply the address of the symbol. For thread local storage symbols (not com-
mons), the symbol value is the thread local storage offset in a library or executable file, and is the size of
the symbol if in a relocatable object file. For storage requests and thread local storage commons, the sym-
bol value is the number of bytes requested; the linker allocates space for the largest request for each sym-
bol in the $BSS$ or $TBSS$ subspaces, unless a local or universal symbol is found for that symbol (in
which case the storage request is treated like an unsatisfied reference).
HP-UX 11i Version 2: August 2003 − 6 − Hewlett-Packard Company Section 4−−7