HP-UX Reference (11i v1 00/12) - 4 File Formats (vol 8)

__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man4/!!!intro.4
________________________________________________________________
___ ___
a
a.out(4) a.out(4)
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).
If a relocatable file is compiled with parameter type checking, extension records follow symbols that define
and reference procedure entry points and global variables. The first extension record, the symbol exten-
sion record, defines the type of the return value or global variable, and (if a procedure or function) the
number of parameters and the types of the first three parameters. If more parameter type descriptors are
needed, one or more argument extension records follow, each containing four more descriptors. A check
level of 0 specifies no type checking; no extension records follow. A check level of 1 or more specifies check-
ing of the return value or global variable type. A check level of 2 or more specifies checking of the number
of parameters, and a check level of 3 specifies checking the types of each individual parameter. The linker
performs the requested level of type checking between unsatisfied symbols and local or universal symbols
as it resolves symbol references.
union arg_descriptor {
struct {
unsigned int reserved: 3; /* reserved */
unsigned int packing: 1; /* packing algorithm used */
unsigned int alignment: 4; /* byte alignment */
unsigned int mode: 4; /* type of descriptor and its use */
unsigned int structure: 4; /* structure of symbol */
unsigned int hash: 1; /* set if arg_type is hashed */
int arg_type: 15; /* data type */
} arg_desc;
unsigned int word;
};
struct symbol_extension_record {
unsigned int type: 8; /* always ST_SYM_EXT */
unsigned int max_num_args: 8; /* max # of parameters */
unsigned int min_num_args: 8; /* min # of parameters */
unsigned int num_args: 8; /* actual # of parameters */
union arg_descriptor symbol_desc; /* symbol type desc. */
union arg_descriptor argument_desc[3]; /* first 3 parameters */
};
struct argument_desc_array {
unsigned int type: 8; /* always ST_ARG_EXT */
unsigned int reserved: 24; /* reserved */
union arg_descriptor argument_desc[4]; /* next 4 parameters */
};
The alignment field in arg_descriptor indicates the minimum alignment of the data, where a
value of n represents n byte alignment. The values for the mode, structure, and arg_type (when
the data type is not hashed) fields in arg_descriptor
are given in the following table.
HP-UX Release 11i: December 2000 6 Section 47
___
___