At least the following types are used; others are, as well, depending on the object file format.
If lowercase, the symbol is local; if uppercase, the symbol is global (external).
|B||in an uninitialized data section (known as BSS).|
|D||in a initialized data section.|
|G||in a initialized data section for small objects.|
|R||in a read only data section.|
|S||in an uninitialized data section for small objects.|
|T||in the text (code) section.|
The symbol's value is absolute, and will not be changed by further linking.
Some object file formats permit more efficient access to small data objects, such as a global int variable as opposed to a large global array.
When a weak defined symbol is linked with a normal defined symbol, the normal defined symbol is used with no error. When a weak undefined symbol is linked and the symbol is not defined, the value of the weak symbol becomes zero with no error.
Maintained by John Loomis, last updated 5 April 2007