* stabs.texinfo (Nested Symbols): New node.

(String Field, Symbol Descriptors): Refer to it.
This commit is contained in:
Jim Kingdon 1993-11-12 22:18:29 +00:00
parent b219511b11
commit 397f9dcdb9
2 changed files with 34 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Fri Nov 12 16:10:58 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* stabs.texinfo (Nested Symbols): New node.
(String Field, Symbol Descriptors): Refer to it.
Thu Nov 11 13:26:45 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* stabs.texinfo (Stabs in ELF): Clarify how Bbss.bss work with respect

View File

@ -202,14 +202,14 @@ The overall format of the string field for most stab types is:
"@var{name}:@var{symbol-descriptor} @var{type-information}"
@end example
@var{name} is the name of the symbol represented by the stab.
@var{name} can be omitted, which means the stab represents an unnamed
object. For example, @samp{:t10=*2} defines type 10 as a pointer to
type 2, but does not give the type a name. Omitting the @var{name}
field is supported by AIX dbx and GDB after about version 4.8, but not
other debuggers. GCC sometimes uses a single space as the name instead
of omitting the name altogether; apparently that is supported by most
debuggers.
@var{name} is the name of the symbol represented by the stab; it can
contain a pair of colons (@pxref{Nested Symbols}). @var{name} can be
omitted, which means the stab represents an unnamed object. For
example, @samp{:t10=*2} defines type 10 as a pointer to type 2, but does
not give the type a name. Omitting the @var{name} field is supported by
AIX dbx and GDB after about version 4.8, but not other debuggers. GCC
sometimes uses a single space as the name instead of omitting the name
altogether; apparently that is supported by most debuggers.
The @var{symbol-descriptor} following the @samp{:} is an alphabetic
character that tells more specifically what kind of symbol the stab
@ -2232,6 +2232,7 @@ Symnum n_type n_othr n_desc n_value n_strx String
@menu
* Class Names:: C++ class names are both tags and typedefs.
* Nested Symbols:: C++ symbol names can be within other types.
* Basic Cplusplus Types::
* Simple Classes::
* Class Instance::
@ -2294,6 +2295,23 @@ or
.stabs "foo:Tt19=s4x:1,0,32;;",128,0,0,0
@end example
@node Nested Symbols
@section Defining a Symbol Within Another Type
In C++, a symbol (such as a type name) can be defined within another type.
@c FIXME: Needs example.
In stabs, this is sometimes represented by making the name of a symbol
which contains @samp{::}. Such a pair of colons does not end the name
of the symbol, the way a single colon would (@pxref{String Field}). I'm
not sure how consistently used or well thought out this mechanism is.
So that a pair of colons in this position always has this meaning,
@samp{:} cannot be used as a symbol descriptor.
For example, if the string for a stab is @samp{foo::bar::baz:t5=*6},
then @code{foo::bar::baz} is the name of the symbol, @samp{t} is the
symbol descriptor, and @samp{5=*6} is the type information.
@node Basic Cplusplus Types
@section Basic Types For C++
@ -3169,6 +3187,9 @@ for more information about their use.
@itemx -
Variable on the stack; see @ref{Stack Variables}.
@item :
C++ nested symbol; see @xref{Nested Symbols}
@item a
Parameter passed by reference in register; see @ref{Reference Parameters}.