HP-UX Reference (11i v1 05/09) - 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 struc-
ture 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, program
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 commons), 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 symbol value is the
number of bytes requested; the linker allocates space for the largest request for each symbol 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 1: September 2005 − 6 − Hewlett-Packard Company Section 4−−7