stcu(3)stcu(3)NAMEstcu - routines that provide a compilation unit symbol table interface
SYNOPSIS
#include <syms.h> pCHDRR st_cuinit ();
void st_setchdr(
pCHDRR pchdr ); pCHDRR st_currentpchdr(
void ); void st_free(
void ); long st_extadd(
long iss,
long value,
long st,
long sc,
long index ); pEXTR st_pext_iext(
long iext ); pEXTR st_pext_rndx(
RNDXR rndx ); long st_iextmax(
void ); long st_extstradd(
char *str ); char *st_str_extiss(
long iss ); long st_idn_index_fext(
long index,
long fext ); long st_idn_rndx(
RNDXR rndx ); pRNDXR st_pdn_idn(
long idn ); RNDXR st_rndx_idn(
long idn ); void st_setidn(
long idndest,
long idnsrc );
DESCRIPTION
The stcu() routines provide an interface to objects that occur once per
object rather than once per file descriptor (for example, external sym‐
bols, strings, and dense numbers). The routines provide access to the
current chdr (compile time hdr), which represents the symbol table in
running processes with pointers to symbol table sections rather than
indices and offsets used in the disk file representation.
A new symbol table can be created with st_cuinit(). This routine cre‐
ates and initializes a CHDRR. The CHDRR is the current chdr and is used
in all later calls. Note: A chdr can also be created with the read rou‐
tines (see stio(3)). The st_cuinit() routine returns a pointer to the
new CHDRR record. Returns a pointer the current chdr. Sets the cur‐
rent chdr to the pchdr argument and sets the per file structures to
reflect a change in symbol tables. Frees all constituent structures
associated with the current chdr. Lets you add to the externals table.
It returns the index to the new external for future reference and use.
The ifd field for the external is filled in by the current file (see
stfd(3)). Returns pointers to the external, given a index referencing
them. The latter routine requires a relative index where the index
field should be the index in external symbols and the rfd field should
be the constant ST_EXTIFD. Note: The externals contain the same struc‐
ture as symbols (see the SYMR and EXTR definitions). Returns the cur‐
rent number of entries in the external symbol table.
The iss field in external symbols (the index into string space)
must point into external string space. Adds a null-terminated
string to the external string space and returns its index. Con‐
verts that index into a pointer to the external string.
The dense number table provides a convenience to the code opti‐
mizer, generator, and assembler. This table lets them reference
symbols from different files and externals with unique densely
packed numbers. Returns a new dense number table index, given
an index into the symbol table of the current file (or if fext
is set, the externals table). Returns a new dense number, but
expects a RNDXR to specify both the file index and the symbol
index rather than implying the file index from the current file.
The RNDXR contains two fields: an index into the externals table
and a file index (rsyms can point into the symbol table, as
well). The file index is ST_EXTIFD for externals. Returns a
RNDX, given an index into the dense number table. Returns a
pointer to the RNDXR index by the idn argument.
SEE ALSOstfe(3), stfd(3)stcu(3)