The external symbol dictionary (ESD) contains one entry for each
external symbol defined or referred to within a module. The dictionary
contains an entry for each external reference, entry name, named or
unnamed control section, class, blank or named common area, and part
or pseudoregister (external dummy section). An entry name or named
control section can be referred to by any control section or separately
processed module. An unnamed control section cannot be referred to
in this way.
Each entry identifies a symbol or a symbolic reference and gives
its location within the module. Each entry in the ESD is classified
as one of the following:
- External reference
- Symbol referenced in the module being processed that is defined
as an external name in another separately processed module. The ESD
entry specifies the symbol; the location is unknown.
- Weak external reference*
- External reference that is not resolved by automatic library
calls unless an ordinary external reference to the same symbol is
found. The ESD entry specifies the symbol; the location is unknown.
- External label definition
- Name that defines an entry point within a section. For load
modules and traditional (OBJ and XOBJ) object modules, an entry point
defines an offset within a control section. For program objects and
GOFF modules, an entry point defines an offset within an element (and
each element is owned by a section). A control section or element
may have multiple entry points. The ESD entry specifies the symbol,
its location, the addressing mode, and identifies the section or element
containing the entry point.
- Section definition
- In load modules and CSECTs, the symbolic name of a control section.
The ESD entry specifies the symbol, the length of the control section,
and its location as an offset within the module or program object
segment in which the section appears. The location represents the
origin, or the first byte, of the control section. This ESD entry
also specifies the CSECT addressing mode and residence mode.
In
Program Objects, a section is the symbolic name of a collection of
elements assigned to one or more classes.
- Private code*
- Unnamed section. The ESD entry specifies the section length,
origin, and can also specify the addressing mode and residence mode
of the CSECT. The name field contains blanks.
- Blank or named common area*
- A section used to reserve a virtual storage area that can be
referenced by other modules. The ESD entry specifies the name and
length of the area. If there is no name, the name field contains blanks.
- Part reference
- A reference to a named subdivision of module text that can be
shared between referencing sections. Parts might or might not occupy
space in the loaded module.
- Pseudoregister*
- A facility (corresponding to the external dummy section feature
of High Level Assembler) that can be used to write reenterable programs. A pseudoregister is part of a dynamically acquired storage
area called a pseudoregister vector. The pseudoregister can be of
any size or data type. The space for such areas is not reserved
in the program module but is acquired during execution. The ESD entry
contains the name, length, alignment, and displacement of the pseudoregister.
- Element definition
- Symbolic name of a class. The ESD entry specifies the attributes
of the class. Element definition is supported by GOFF and program
objects only.
Note: The binder requires fewer ESD record types than
the linkage editor. Symbol types followed by an asterisk represent
variations of the preceding type as they appear in binder listings,
GOFF modules, and program objects.