* 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 #.
This commit is contained in:
Jim Kingdon 1994-03-23 15:18:17 +00:00
parent 0a64709eb4
commit 2b7ac6fdb0
2 changed files with 49 additions and 28 deletions

View file

@ -1,3 +1,9 @@
Wed Mar 23 07:16:36 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* 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 #.
Wed Mar 16 08:20:19 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* gdb.texinfo (Print Settings): Don't document "set print

View file

@ -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.