There are two major uses of the address type symbols. First,
the EXAMINE command employs them to find the value of a known
symbol. For example, EXAMINE CTL$GL_PCB finds the PCB for the
current process. Then, certain SDA commands (such as EXAMINE,
SHOW STACK, and FORMAT) use them to symbolize addresses when
generating output.
When the code for one of these commands needs a symbol for an
address, it calls the SDA symbolize routine. The symbolize
routine tries to find the symbol in the symbol table whose
address is closest to, but not greater than the requested
address. This means, for any given address, the routine may
return a symbol of the form symbol_name+offset. If, however,
the offset is greater than 0FFF(16), it fails to find a symbol
for the address.
As a last resort, the symbolize routine checks to see if this
address falls within a known memory range. Currently, the only
known memory ranges are those used by the OpenVMS executive
images and those used by active images in a process. SDA searches
through the executive loaded image list (LDRIMG data structure)
and activated image list (IMCB data structures) to see if the
address falls within any of the image sections. If SDA does find
a match, it returns one of the following types of symbols:
executive_image_name+offset
activated_image_name+offset
The offset is the same as the image offset as defined in the map
file.
The constants in the SDA symbol table are usually used to display
a data structure with the FORMAT command. For example, the PHD
offsets are defined in SYSDEF.STB; you can display all the fields
of the PHD by entering the following commands:
SDA> READ SDA$READ_DIR:SYSDEF.STB
SDA> FORMAT/TYPE=PHD phd_address