aboutsummaryrefslogtreecommitdiff
path: root/gdb/doc
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-11-12 22:18:29 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-11-12 22:18:29 +0000
commit397f9dcdb9bfa0c23ba8f3ffdbf3336274e39dae (patch)
treefedf98ccbb4ae9edcb6a1803daa28f9a787bb520 /gdb/doc
parentb219511b11aeb7d182f54c70e998da1afc365a20 (diff)
downloadgdb-397f9dcdb9bfa0c23ba8f3ffdbf3336274e39dae.zip
gdb-397f9dcdb9bfa0c23ba8f3ffdbf3336274e39dae.tar.gz
gdb-397f9dcdb9bfa0c23ba8f3ffdbf3336274e39dae.tar.bz2
* stabs.texinfo (Nested Symbols): New node.
(String Field, Symbol Descriptors): Refer to it.
Diffstat (limited to 'gdb/doc')
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/stabs.texinfo37
2 files changed, 34 insertions, 8 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 69a1bd8..418dc9f 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -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
diff --git a/gdb/doc/stabs.texinfo b/gdb/doc/stabs.texinfo
index e74127b..fb86f08 100644
--- a/gdb/doc/stabs.texinfo
+++ b/gdb/doc/stabs.texinfo
@@ -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}.