|
|
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 ``Name field''.
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''.