Go to the first, previous, next, last section, table of contents.
There are three directives that begin `.stab'.
All emit symbols (see section Symbols), for use by symbolic debuggers.
The symbols are not entered in the as
hash table: they
cannot be referenced elsewhere in the source file.
Up to five fields are required:
- string
- This is the symbol's name. It may contain any character except
`\000', so is more general than ordinary symbol names. Some
debuggers used to code arbitrarily complex structures into symbol names
using this field.
- type
- An absolute expression. The symbol's type is set to the low 8 bits of
this expression. Any bit pattern is permitted, but
ld
and debuggers choke on silly bit patterns.
- other
- An absolute expression. The symbol's "other" attribute is set to the
low 8 bits of this expression.
- desc
- An absolute expression. The symbol's descriptor is set to the low 16
bits of this expression.
- value
- An absolute expression which becomes the symbol's value.
If a warning is detected while reading a .stabd
, .stabn
,
or .stabs
statement, the symbol has probably already been created;
you get a half-formed symbol in your object file. This is
compatible with earlier assemblers!
.stabd type , other , desc
-
The "name" of the symbol generated is not even an empty string.
It is a null pointer, for compatibility. Older assemblers used a
null pointer so they didn't waste space in object files with empty
strings.
The symbol's value is set to the location counter,
relocatably. When your program is linked, the value of this symbol
is the address of the location counter when the
.stabd
was
assembled.
.stabn type , other , desc , value
- The name of the symbol is set to the empty string
""
.
.stabs string , type , other , desc , value
- All five fields are specified.
Go to the first, previous, next, last section, table of contents.