External symbol dictionary
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.
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.