Symbol names
The first 8 bytes in the symbol table entry are a union
of a character array and two longs.
If the symbol name is
eight characters or less, the (null-padded) symbol name is
stored there.
If the symbol name is longer than eight characters,
then the entire symbol name is stored in the string table.
In
this case, the 8 bytes contain two long integers, the first
is zero, and the second is the offset
(relative to the beginning of the string table) of the name
in the string table.
Since there can be no symbols with a null name,
the zeroes on the first 4 bytes
serve to distinguish a symbol table entry with an offset from
one with a name in the first 8 bytes as shown in
Table 7-17, ``Name field''.
Table 7-17 Name field
Bytes Declaration Name Description
-----------------------------------------------------
0-7 char n_name 8-character null-
padded symbol name
0-3 long n_zeroes Zero in this field
indicates the name
is in the string
table
4-7 long n_offset Offset of the name
in the string table
Special symbols generated by the C compilation system are
discussed in
``Special symbols''.