2004-02-12 Elena Zannoni <ezannoni@redhat.com>

* gdb.texinfo: Properly quote the name "C++".
 	* gdbint.texinfo: Ditto.
 	* stabs.texinfo: Ditto.
This commit is contained in:
Elena Zannoni 2004-02-12 17:46:40 +00:00
parent 31687c3c25
commit 49efadf5a0
4 changed files with 52 additions and 46 deletions

View File

@ -1,3 +1,9 @@
2004-02-12 Elena Zannoni <ezannoni@redhat.com>
* gdb.texinfo: Properly quote the name "C++".
* gdbint.texinfo: Ditto.
* stabs.texinfo: Ditto.
2004-02-11 Elena Zannoni <ezannoni@redhat.com> 2004-02-11 Elena Zannoni <ezannoni@redhat.com>
* gdbint.texinfo (Support Libraries): Add doco about obstacks and * gdbint.texinfo (Support Libraries): Add doco about obstacks and

View File

@ -192,7 +192,7 @@ Change things in your program, so you can experiment with correcting the
effects of one bug and go on to learn about another. effects of one bug and go on to learn about another.
@end itemize @end itemize
You can use @value{GDBN} to debug programs written in C and C++. You can use @value{GDBN} to debug programs written in C and C@t{++}.
For more information, see @ref{Support,,Supported languages}. For more information, see @ref{Support,,Supported languages}.
For more information, see @ref{C,,C and C++}. For more information, see @ref{C,,C and C++}.
@ -6371,7 +6371,7 @@ character.
@node Macros @node Macros
@chapter C Preprocessor Macros @chapter C Preprocessor Macros
Some languages, such as C and C++, provide a way to define and invoke Some languages, such as C and C@t{++}, provide a way to define and invoke
``preprocessor macros'' which expand into strings of tokens. ``preprocessor macros'' which expand into strings of tokens.
@value{GDBN} can evaluate expressions containing macro invocations, show @value{GDBN} can evaluate expressions containing macro invocations, show
the result of macro expansion, and show a macro's definition, including the result of macro expansion, and show a macro's definition, including
@ -9925,7 +9925,7 @@ Some embedded operating systems, like Sun Chorus and VxWorks, can load
relocatable files into an already running program; such systems relocatable files into an already running program; such systems
typically make the requirements above easy to meet. However, it's typically make the requirements above easy to meet. However, it's
important to recognize that many native systems use complex link important to recognize that many native systems use complex link
procedures (@code{.linkonce} section factoring and C++ constructor table procedures (@code{.linkonce} section factoring and C@t{++} constructor table
assembly, for example) that make the requirements difficult to meet. In assembly, for example) that make the requirements difficult to meet. In
general, one cannot assume that using @code{add-symbol-file} to read a general, one cannot assume that using @code{add-symbol-file} to read a
relocatable object file's symbolic information will have the same effect relocatable object file's symbolic information will have the same effect

View File

@ -6497,7 +6497,7 @@ intelligibility.
This is the base testsuite. The tests in it should apply to all This is the base testsuite. The tests in it should apply to all
configurations of @value{GDBN} (but generic native-only tests may live here). configurations of @value{GDBN} (but generic native-only tests may live here).
The test programs should be in the subset of C that is valid K&R, The test programs should be in the subset of C that is valid K&R,
ANSI/ISO, and C++ (@code{#ifdef}s are allowed if necessary, for instance ANSI/ISO, and C@t{++} (@code{#ifdef}s are allowed if necessary, for instance
for prototypes). for prototypes).
@item gdb.@var{lang} @item gdb.@var{lang}

View File

@ -252,10 +252,10 @@ There is an AIX extension for type attributes. Following the @samp{=}
are any number of type attributes. Each one starts with @samp{@@} and are any number of type attributes. Each one starts with @samp{@@} and
ends with @samp{;}. Debuggers, including AIX's dbx and GDB 4.10, skip ends with @samp{;}. Debuggers, including AIX's dbx and GDB 4.10, skip
any type attributes they do not recognize. GDB 4.9 and other versions any type attributes they do not recognize. GDB 4.9 and other versions
of dbx may not do this. Because of a conflict with C++ of dbx may not do this. Because of a conflict with C@t{++}
(@pxref{Cplusplus}), new attributes should not be defined which begin (@pxref{Cplusplus}), new attributes should not be defined which begin
with a digit, @samp{(}, or @samp{-}; GDB may be unable to distinguish with a digit, @samp{(}, or @samp{-}; GDB may be unable to distinguish
those from the C++ type descriptor @samp{@@}. The attributes are: those from the C@t{++} type descriptor @samp{@@}. The attributes are:
@table @code @table @code
@item a@var{boundary} @item a@var{boundary}
@ -430,7 +430,7 @@ Some compilers (for example, GCC2 and SunOS4 @file{/bin/cc}) also
include the directory in which the source was compiled, in a second include the directory in which the source was compiled, in a second
@code{N_SO} symbol preceding the one containing the file name. This @code{N_SO} symbol preceding the one containing the file name. This
symbol can be distinguished by the fact that it ends in a slash. Code symbol can be distinguished by the fact that it ends in a slash. Code
from the @code{cfront} C++ compiler can have additional @code{N_SO} symbols for from the @code{cfront} C@t{++} compiler can have additional @code{N_SO} symbols for
nonexistent source files after the @code{N_SO} for the real source file; nonexistent source files after the @code{N_SO} for the real source file;
these are believed to contain no useful information. these are believed to contain no useful information.
@ -1765,7 +1765,7 @@ Another way is with the @samp{x} type descriptor, which is followed by
@samp{s} for a structure tag, @samp{u} for a union tag, or @samp{e} for @samp{s} for a structure tag, @samp{u} for a union tag, or @samp{e} for
a enumerator tag, followed by the name of the tag, followed by @samp{:}. a enumerator tag, followed by the name of the tag, followed by @samp{:}.
If the name contains @samp{::} between a @samp{<} and @samp{>} pair (for If the name contains @samp{::} between a @samp{<} and @samp{>} pair (for
C++ templates), such a @samp{::} does not end the name---only a single C@t{++} templates), such a @samp{::} does not end the name---only a single
@samp{:} ends the name; see @ref{Nested Symbols}. @samp{:} ends the name; see @ref{Nested Symbols}.
For example, the following C declarations: For example, the following C declarations:
@ -2062,13 +2062,13 @@ The @code{s_next} field is a pointer to the same kind of structure that
the field is an element of. So the definition of structure type 16 the field is an element of. So the definition of structure type 16
contains a type definition for an element which is a pointer to type 16. contains a type definition for an element which is a pointer to type 16.
If a field is a static member (this is a C++ feature in which a single If a field is a static member (this is a C@t{++} feature in which a single
variable appears to be a field of every structure of a given type) it variable appears to be a field of every structure of a given type) it
still starts out with the field name, a colon, and the type, but then still starts out with the field name, a colon, and the type, but then
instead of a comma, bit position, comma, and bit size, there is a colon instead of a comma, bit position, comma, and bit size, there is a colon
followed by the name of the variable which each such field refers to. followed by the name of the variable which each such field refers to.
If the structure has methods (a C++ feature), they follow the non-method If the structure has methods (a C@t{++} feature), they follow the non-method
fields; see @ref{Cplusplus}. fields; see @ref{Cplusplus}.
@node Typedefs @node Typedefs
@ -2389,7 +2389,7 @@ Symnum n_type n_othr n_desc n_value n_strx String
@end example @end example
@node Cplusplus @node Cplusplus
@chapter GNU C++ Stabs @chapter GNU C@t{++} Stabs
@menu @menu
* Class Names:: C++ class names are both tags and typedefs. * Class Names:: C++ class names are both tags and typedefs.
@ -2409,9 +2409,9 @@ Symnum n_type n_othr n_desc n_value n_strx String
@end menu @end menu
@node Class Names @node Class Names
@section C++ Class Names @section C@t{++} Class Names
In C++, a class name which is declared with @code{class}, @code{struct}, In C@t{++}, a class name which is declared with @code{class}, @code{struct},
or @code{union}, is not only a tag, as in C, but also a type name. Thus or @code{union}, is not only a tag, as in C, but also a type name. Thus
there should be stabs with both @samp{t} and @samp{T} symbol descriptors there should be stabs with both @samp{t} and @samp{T} symbol descriptors
(@pxref{Typedefs}). (@pxref{Typedefs}).
@ -2420,7 +2420,7 @@ To save space, there is a special abbreviation for this case. If the
@samp{T} symbol descriptor is followed by @samp{t}, then the stab @samp{T} symbol descriptor is followed by @samp{t}, then the stab
defines both a type name and a tag. defines both a type name and a tag.
For example, the C++ code For example, the C@t{++} code
@example @example
struct foo @{int x;@}; struct foo @{int x;@};
@ -2442,7 +2442,7 @@ or
@node Nested Symbols @node Nested Symbols
@section Defining a Symbol Within Another Type @section Defining a Symbol Within Another Type
In C++, a symbol (such as a type name) can be defined within another type. In C@t{++}, a symbol (such as a type name) can be defined within another type.
@c FIXME: Needs example. @c FIXME: Needs example.
In stabs, this is sometimes represented by making the name of a symbol In stabs, this is sometimes represented by making the name of a symbol
@ -2457,12 +2457,12 @@ 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. symbol descriptor, and @samp{5=*6} is the type information.
@node Basic Cplusplus Types @node Basic Cplusplus Types
@section Basic Types For C++ @section Basic Types For C@t{++}
<< the examples that follow are based on a01.C >> << the examples that follow are based on a01.C >>
C++ adds two more builtin types to the set defined for C. These are C@t{++} adds two more builtin types to the set defined for C. These are
the unknown type and the vtable record type. The unknown type, type the unknown type and the vtable record type. The unknown type, type
16, is defined in terms of itself like the void type. 16, is defined in terms of itself like the void type.
@ -2473,7 +2473,7 @@ pfn, and delta2. pfn is the function pointer.
<< In boilerplate $vtbl_ptr_type, what are the fields delta, << In boilerplate $vtbl_ptr_type, what are the fields delta,
index, and delta2 used for? >> index, and delta2 used for? >>
This basic type is present in all C++ programs even if there are no This basic type is present in all C@t{++} programs even if there are no
virtual methods defined. virtual methods defined.
@display @display
@ -2503,8 +2503,8 @@ virtual methods defined.
@node Simple Classes @node Simple Classes
@section Simple Class Definition @section Simple Class Definition
The stabs describing C++ language features are an extension of the The stabs describing C@t{++} language features are an extension of the
stabs describing C. Stabs representing C++ class types elaborate stabs describing C. Stabs representing C@t{++} class types elaborate
extensively on the stab format used to describe structure types in C. extensively on the stab format used to describe structure types in C.
Stabs representing class type variables look just like stabs Stabs representing class type variables look just like stabs
representing C language variables. representing C language variables.
@ -2526,20 +2526,20 @@ stab is not located between an @code{N_FUN} and an @code{N_LBRAC} stab this indi
that the class is defined at file scope. If it were, then the @code{N_LSYM} that the class is defined at file scope. If it were, then the @code{N_LSYM}
would signify a local variable. would signify a local variable.
A stab describing a C++ class type is similar in format to a stab A stab describing a C@t{++} class type is similar in format to a stab
describing a C struct, with each class member shown as a field in the describing a C struct, with each class member shown as a field in the
structure. The part of the struct format describing fields is structure. The part of the struct format describing fields is
expanded to include extra information relevant to C++ class members. expanded to include extra information relevant to C@t{++} class members.
In addition, if the class has multiple base classes or virtual In addition, if the class has multiple base classes or virtual
functions the struct format outside of the field parts is also functions the struct format outside of the field parts is also
augmented. augmented.
In this simple example the field part of the C++ class stab In this simple example the field part of the C@t{++} class stab
representing member data looks just like the field part of a C struct representing member data looks just like the field part of a C struct
stab. The section on protections describes how its format is stab. The section on protections describes how its format is
sometimes extended for member data. sometimes extended for member data.
The field part of a C++ class stab representing a member function The field part of a C@t{++} class stab representing a member function
differs substantially from the field part of a C struct stab. It differs substantially from the field part of a C struct stab. It
still begins with @samp{name:} but then goes on to define a new type number still begins with @samp{name:} but then goes on to define a new type number
for the member function, describe its return type, its argument types, for the member function, describe its return type, its argument types,
@ -2566,7 +2566,7 @@ occur in the @var{operator-name} string.
The next part of the method description represents the arguments to the The next part of the method description represents the arguments to the
method, preceded by a colon and ending with a semi-colon. The types of method, preceded by a colon and ending with a semi-colon. The types of
the arguments are expressed in the same way argument types are expressed the arguments are expressed in the same way argument types are expressed
in C++ name mangling. In this example an @code{int} and a @code{char} in C@t{++} name mangling. In this example an @code{int} and a @code{char}
map to @samp{ic}. map to @samp{ic}.
This is followed by a number, a letter, and an asterisk or period, This is followed by a number, a letter, and an asterisk or period,
@ -2600,7 +2600,7 @@ information present for virtual methods.
@node Class Instance @node Class Instance
@section Class Instance @section Class Instance
As shown above, describing even a simple C++ class definition is As shown above, describing even a simple C@t{++} class definition is
accomplished by massively extending the stab format used in C to accomplished by massively extending the stab format used in C to
describe structure types. However, once the class is defined, C stabs describe structure types. However, once the class is defined, C stabs
with no modifications can be used to describe class instances. The with no modifications can be used to describe class instances. The
@ -2627,7 +2627,7 @@ different from a standard C stab describing a local variable.
@node Methods @node Methods
@section Method Definition @section Method Definition
The class definition shown above declares Ameth. The C++ source below The class definition shown above declares Ameth. The C@t{++} source below
defines Ameth: defines Ameth:
@example @example
@ -2723,7 +2723,7 @@ descriptor for a pointer-to-non-static-member-data type. It is followed
by type information for the class (or union), a comma, and type by type information for the class (or union), a comma, and type
information for the member data. information for the member data.
The following C++ source: The following C@t{++} source:
@smallexample @smallexample
typedef int A::*int_in_a; typedef int A::*int_in_a;
@ -2737,7 +2737,7 @@ generates the following stab:
Note that there is a conflict between this and type attributes Note that there is a conflict between this and type attributes
(@pxref{String Field}); both use type descriptor @samp{@@}. (@pxref{String Field}); both use type descriptor @samp{@@}.
Fortunately, the @samp{@@} type descriptor used in this C++ sense always Fortunately, the @samp{@@} type descriptor used in this C@t{++} sense always
will be followed by a digit, @samp{(}, or @samp{-}, and type attributes will be followed by a digit, @samp{(}, or @samp{-}, and type attributes
never start with those things. never start with those things.
@ -2747,7 +2747,7 @@ never start with those things.
In the simple class definition shown above all member data and In the simple class definition shown above all member data and
functions were publicly accessible. The example that follows functions were publicly accessible. The example that follows
contrasts public, protected and privately accessible fields and shows contrasts public, protected and privately accessible fields and shows
how these protections are encoded in C++ stabs. how these protections are encoded in C@t{++} stabs.
If the character following the @samp{@var{field-name}:} part of the If the character following the @samp{@var{field-name}:} part of the
string is @samp{/}, then the next character is the visibility. @samp{0} string is @samp{/}, then the next character is the visibility. @samp{0}
@ -2761,7 +2761,7 @@ an optimized out field with a private or protected visibility).
Visibility @samp{9} is not supported by GDB 4.11; this should be fixed Visibility @samp{9} is not supported by GDB 4.11; this should be fixed
in the next GDB release. in the next GDB release.
The following C++ source: The following C@t{++} source:
@example @example
class vis @{ class vis @{
@ -2791,7 +2791,7 @@ type float (@samp{12}), and offset and size @samp{,64,32;}.
Protections for member functions are signified by one digit embedded in Protections for member functions are signified by one digit embedded in
the field part of the stab describing the method. The digit is 0 if the field part of the stab describing the method. The digit is 0 if
private, 1 if protected and 2 if public. Consider the C++ class private, 1 if protected and 2 if public. Consider the C@t{++} class
definition below: definition below:
@example @example
@ -2889,7 +2889,7 @@ struct is @samp{Adat}, an integer, starting at structure offset 0 and
occupying 32 bits. occupying 32 bits.
The second field in the class struct is not explicitly defined by the The second field in the class struct is not explicitly defined by the
C++ class definition but is implied by the fact that the class C@t{++} class definition but is implied by the fact that the class
contains a virtual method. This field is the vtable pointer. The contains a virtual method. This field is the vtable pointer. The
name of the vtable pointer field starts with @samp{$vf} and continues with a name of the vtable pointer field starts with @samp{$vf} and continues with a
type reference to the class it is part of. In this example the type type reference to the class it is part of. In this example the type
@ -2901,7 +2901,7 @@ This is in turn defined as a pointer to another new type (22).
Type 22 is the vtable itself, which is defined as an array, indexed by Type 22 is the vtable itself, which is defined as an array, indexed by
a range of integers between 0 and 1, and whose elements are of type a range of integers between 0 and 1, and whose elements are of type
17. Type 17 was the vtable record type defined by the boilerplate C++ 17. Type 17 was the vtable record type defined by the boilerplate C@t{++}
type definitions, as shown earlier. type definitions, as shown earlier.
The bit offset of the vtable pointer field is 32. The number of bits The bit offset of the vtable pointer field is 32. The number of bits
@ -2955,7 +2955,7 @@ class. This is preceded by @samp{~%} and followed by a final semi-colon.
@node Inheritance @node Inheritance
@section Inheritance @section Inheritance
Stabs describing C++ derived classes include additional sections that Stabs describing C@t{++} derived classes include additional sections that
describe the inheritance hierarchy of the class. A derived class stab describe the inheritance hierarchy of the class. A derived class stab
also encodes the number of base classes. For each base class it tells also encodes the number of base classes. For each base class it tells
if the base class is virtual or not, and if the inheritance is private if the base class is virtual or not, and if the inheritance is private
@ -3286,13 +3286,13 @@ GNU Modula2 definition module dependency; see @ref{N_DEFD}.
Function start/body/end line numbers (Solaris2). Function start/body/end line numbers (Solaris2).
@item 0x50 N_EHDECL @item 0x50 N_EHDECL
GNU C++ exception variable; see @ref{N_EHDECL}. GNU C@t{++} exception variable; see @ref{N_EHDECL}.
@item 0x50 N_MOD2 @item 0x50 N_MOD2
Modula2 info "for imc" (according to Ultrix V4.0); see @ref{N_MOD2}. Modula2 info "for imc" (according to Ultrix V4.0); see @ref{N_MOD2}.
@item 0x54 N_CATCH @item 0x54 N_CATCH
GNU C++ @code{catch} clause; see @ref{N_CATCH}. GNU C@t{++} @code{catch} clause; see @ref{N_CATCH}.
@item 0x60 N_SSYM @item 0x60 N_SSYM
Structure of union element; see @ref{N_SSYM}. Structure of union element; see @ref{N_SSYM}.
@ -3386,7 +3386,7 @@ for more information about their use.
Variable on the stack; see @ref{Stack Variables}. Variable on the stack; see @ref{Stack Variables}.
@item : @item :
C++ nested symbol; see @xref{Nested Symbols}. C@t{++} nested symbol; see @xref{Nested Symbols}.
@item a @item a
Parameter passed by reference in register; see @ref{Reference Parameters}. Parameter passed by reference in register; see @ref{Reference Parameters}.
@ -3399,7 +3399,7 @@ Constant; see @ref{Constants}.
@item C @item C
Conformant array bound (Pascal, maybe other languages); @ref{Conformant Conformant array bound (Pascal, maybe other languages); @ref{Conformant
Arrays}. Name of a caught exception (GNU C++). These can be Arrays}. Name of a caught exception (GNU C@t{++}). These can be
distinguished because the latter uses @code{N_CATCH} and the former uses distinguished because the latter uses @code{N_CATCH} and the former uses
another symbol type. another symbol type.
@ -3500,17 +3500,17 @@ Type reference; see @ref{String Field}.
Reference to builtin type; see @ref{Negative Type Numbers}. Reference to builtin type; see @ref{Negative Type Numbers}.
@item # @item #
Method (C++); see @ref{Method Type Descriptor}. Method (C@t{++}); see @ref{Method Type Descriptor}.
@item * @item *
Pointer; see @ref{Miscellaneous Types}. Pointer; see @ref{Miscellaneous Types}.
@item & @item &
Reference (C++). Reference (C@t{++}).
@item @@ @item @@
Type Attributes (AIX); see @ref{String Field}. Member (class and variable) Type Attributes (AIX); see @ref{String Field}. Member (class and variable)
type (GNU C++); see @ref{Member Type Descriptor}. type (GNU C@t{++}); see @ref{Member Type Descriptor}.
@item a @item a
Array; see @ref{Arrays}. Array; see @ref{Arrays}.
@ -3615,7 +3615,7 @@ Wide character; see @ref{Builtin Type Descriptors}.
Cross-reference; see @ref{Cross-References}. Cross-reference; see @ref{Cross-References}.
@item Y @item Y
Used by IBM's xlC C++ compiler (for structures, I think). Used by IBM's xlC C@t{++} compiler (for structures, I think).
@item z @item z
gstring; see @ref{Strings}. gstring; see @ref{Strings}.
@ -3757,7 +3757,7 @@ if it is imported with the GNU M2 keyword @code{%INITIALIZE}. Perhaps
@deffn @code{.stabs} N_EHDECL @deffn @code{.stabs} N_EHDECL
@findex N_EHDECL @findex N_EHDECL
GNU C++ exception variable <<?>>. GNU C@t{++} exception variable <<?>>.
"@var{string} is variable name" "@var{string} is variable name"
@ -3779,9 +3779,9 @@ Note: conflicts with @code{N_EHDECL} <<?>>
@deffn @code{.stabn} N_CATCH @deffn @code{.stabn} N_CATCH
@findex N_CATCH @findex N_CATCH
GNU C++ @code{catch} clause GNU C@t{++} @code{catch} clause
GNU C++ @code{catch} clause. The value is its address. The desc field GNU C@t{++} @code{catch} clause. The value is its address. The desc field
is nonzero if this entry is immediately followed by a @code{CAUGHT} stab is nonzero if this entry is immediately followed by a @code{CAUGHT} stab
saying what exception was caught. Multiple @code{CAUGHT} stabs means saying what exception was caught. Multiple @code{CAUGHT} stabs means
that multiple exceptions can be caught here. If desc is 0, it means all that multiple exceptions can be caught here. If desc is 0, it means all