aboutsummaryrefslogtreecommitdiff
path: root/gdb/doc/stabs.texinfo
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1994-03-23 15:18:17 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1994-03-23 15:18:17 +0000
commit2b7ac6fdb0eaf6884e7a220c3b4f1c54446d5688 (patch)
tree354589166ab73ee87a6bba68564200570ad037b4 /gdb/doc/stabs.texinfo
parent0a64709eb45bf02187300e8b539dcc052b508c04 (diff)
downloadgdb-2b7ac6fdb0eaf6884e7a220c3b4f1c54446d5688.zip
gdb-2b7ac6fdb0eaf6884e7a220c3b4f1c54446d5688.tar.gz
gdb-2b7ac6fdb0eaf6884e7a220c3b4f1c54446d5688.tar.bz2
* stabs.texinfo: Move stuff on @ and # type descriptors from node
Cplusplus to new nodes Member Type Descriptor and Method Type Descriptor. Re-write stuff for #.
Diffstat (limited to 'gdb/doc/stabs.texinfo')
-rw-r--r--gdb/doc/stabs.texinfo71
1 files changed, 43 insertions, 28 deletions
diff --git a/gdb/doc/stabs.texinfo b/gdb/doc/stabs.texinfo
index 4628259..c75836e 100644
--- a/gdb/doc/stabs.texinfo
+++ b/gdb/doc/stabs.texinfo
@@ -2313,6 +2313,8 @@ Symnum n_type n_othr n_desc n_value n_strx String
* Simple Classes::
* Class Instance::
* Methods:: Method definition
+* Method Type Descriptor:: The @samp{#} type descriptor
+* Member Type Descriptor:: The @samp{@@} type descriptor
* Protections::
* Method Modifiers::
* Virtual Methods::
@@ -2321,25 +2323,6 @@ Symnum n_type n_othr n_desc n_value n_strx String
* Static Members::
@end menu
-Type descriptors added for C++ descriptions:
-
-@table @code
-@item #
-method type (@code{##} if minimal debug)
-
-@item @@
-Member (class and variable) type. It is followed by type information
-for the offset basetype, a comma, and type information for the type of
-the field being pointed to. (FIXME: this is acknowledged to be
-gibberish. Can anyone say what really goes here?).
-
-Note that there is a conflict between this and type attributes
-(@pxref{String Field}); both use type descriptor @samp{@@}.
-Fortunately, the @samp{@@} type descriptor used in this C++ sense always
-will be followed by a digit, @samp{(}, or @samp{-}, and type attributes
-never start with those things.
-@end table
-
@node Class Names
@section C++ Class Names
@@ -2483,12 +2466,11 @@ method.
When the field name is a method name it is followed by two colons rather
than one. This is followed by a new type definition for the method.
-This is a number followed by an equal sign and the type descriptor
-@samp{#}, indicating a method type, and a second @samp{#}, indicating
-that this is the @dfn{minimal} type of method definition used by GCC2,
-not larger method definitions used by earlier versions of GCC. This is
-followed by a type reference showing the return type of the method and a
-semi-colon.
+This is a number followed by an equal sign and the type of the method.
+Normally this will be a type declared using the @samp{#} type
+descriptor; see @ref{Method Type Descriptor}; static member functions
+are declared using the @samp{f} type descriptor instead; see
+@ref{Function Types}.
The format of an overloaded operator method name differs from that of
other methods. It is @samp{op$::@var{operator-name}.} where
@@ -2625,6 +2607,39 @@ pointer.
<< The examples that follow are based on A1.C >>
+@node Method Type Descriptor
+@section The @samp{#} Type Descriptor
+
+This is like the @samp{f} type descriptor for functions (@pxref{Function
+Types}), except that a function which uses the @samp{#} type descriptor
+takes an extra argument as its first argument, for the @code{this}
+pointer. The @samp{#} type descriptor is optionally followed by the
+types of the arguments, then another @samp{#}. If the types of the
+arguments are omitted, so that the second @samp{#} immediately follows
+the @samp{#} which is the type descriptor, the arguments are being
+omitted (to save space) and can be deduced from the mangled name of the
+method. After the second @samp{#} there is type information for the
+return type of the method and a semicolon.
+
+Note that although such a type will normally be used to describe fields
+in structures, unions, or classes, for at least some versions of the
+compiler it can also be used in other contexts.
+
+@node Member Type Descriptor
+@section The @samp{@@} Type Descriptor
+
+The @samp{@@} type descriptor is for a member (class and variable) type.
+It is followed by type information for the offset basetype, a comma, and
+type information for the type of the field being pointed to. (FIXME:
+this is acknowledged to be gibberish. Can anyone say what really goes
+here?).
+
+Note that there is a conflict between this and type attributes
+(@pxref{String Field}); both use type descriptor @samp{@@}.
+Fortunately, the @samp{@@} type descriptor used in this C++ sense always
+will be followed by a digit, @samp{(}, or @samp{-}, and type attributes
+never start with those things.
+
@node Protections
@section Protections
@@ -3384,7 +3399,7 @@ Type reference; see @ref{String Field}.
Reference to builtin type; see @ref{Negative Type Numbers}.
@item #
-Method (C++); see @ref{Cplusplus}.
+Method (C++); see @ref{Method Type Descriptor}.
@item *
Pointer; see @ref{Miscellaneous Types}.
@@ -3394,7 +3409,7 @@ Reference (C++).
@item @@
Type Attributes (AIX); see @ref{String Field}. Member (class and variable)
-type (GNU C++); see @ref{Cplusplus}.
+type (GNU C++); see @ref{Member Type Descriptor}.
@item a
Array; see @ref{Arrays}.
@@ -3526,7 +3541,7 @@ The third line is the stab format with the significant stab fields
named and the rest NIL.
Subsequent lines expand upon the meaning and possible values for each
-significant stab field. @samp{#} stands in for the type descriptor.
+significant stab field.
Finally, any further information.