The symbol table contains some special symbols that are generated by as and other tools. These symbols are given in ``Special symbols in the symbol table''.
Special symbols in the symbol table
|.text||address of .text section|
|.data||address of .data section|
|.bss||address of .bss section|
|.bb||address of start of inner block|
|.eb||address of end of inner block|
|.bf||address of start of function|
|.ef||address of end of function|
|.target||pointer to the structure or union|
|returned by a function|
|.xfake||dummy tag name for structure,|
|union, or enumeration|
|.eos||end of members of structure, union, or enumeration|
|etext||next available address after the end|
|of the output section .text|
|edata||next available address after the end|
|of the output section .data|
|end||next available address after the end|
|of the output section .bss|
Six of these special symbols occur in pairs. The .bb and .eb symbols indicate the boundaries of inner blocks; a .bf and .ef pair brackets each function. An .xfake and .eos pair names and defines the limit of structures, unions, and enumerations that were not named. The .eos symbol also appears after named structures, unions, and enumerations.
When a structure, union, or enumeration
has no tag name, the compiler invents a name to be used in the symbol table.
The name chosen for the symbol table is .xfake,
where x is an integer.
If there are three unnamed
structures, unions, or enumerations in the source, their tag names
are .0fake, .1fake, and .2fake.
Each of the special symbols has different information stored in the
symbol table entry as well as the auxiliary entries.