mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 15:18:37 +08:00
* stabs.texinfo:
Use consistent capitalization style in node and section names.
This commit is contained in:
@ -6,6 +6,8 @@ Sat Aug 28 12:08:09 1993 David J. MacKenzie (djm@edison.eng.umd.edu)
|
|||||||
Use @deffn to define stab types.
|
Use @deffn to define stab types.
|
||||||
Eliminate some wordiness. Break up some nodes.
|
Eliminate some wordiness. Break up some nodes.
|
||||||
Add an (alphabetized) index of symbol types.
|
Add an (alphabetized) index of symbol types.
|
||||||
|
Use consistent capitalization style in node and section names.
|
||||||
|
|
||||||
Thu Aug 26 06:36:31 1993 Fred Fish (fnf@deneb.cygnus.com)
|
Thu Aug 26 06:36:31 1993 Fred Fish (fnf@deneb.cygnus.com)
|
||||||
|
|
||||||
* gdb.texinfo: Change typo "Two two" to "The two".
|
* gdb.texinfo: Change typo "Two two" to "The two".
|
||||||
|
@ -72,18 +72,18 @@ This document describes the stabs debugging format.
|
|||||||
* Constants:: Constants
|
* Constants:: Constants
|
||||||
* Variables::
|
* Variables::
|
||||||
* Types:: Type definitions
|
* Types:: Type definitions
|
||||||
* Symbol Tables:: Symbol information in symbol tables
|
* Symbol tables:: Symbol information in symbol tables
|
||||||
* Cplusplus:: Appendixes:
|
* Cplusplus:: Appendixes:
|
||||||
* Stab Types:: Symbol types in a.out files
|
* Stab types:: Symbol types in a.out files
|
||||||
* Symbol Descriptors:: Table of Symbol Descriptors
|
* Symbol descriptors:: Table of Symbol descriptors
|
||||||
* Type Descriptors:: Table of Symbol Descriptors
|
* Type descriptors:: Table of Symbol descriptors
|
||||||
* Expanded reference:: Reference information by stab type
|
* Expanded reference:: Reference information by stab type
|
||||||
* Questions:: Questions and anomolies
|
* Questions:: Questions and anomolies
|
||||||
* XCOFF-differences:: Differences between GNU stabs in a.out
|
* XCOFF differences:: Differences between GNU stabs in a.out
|
||||||
and GNU stabs in XCOFF
|
and GNU stabs in XCOFF
|
||||||
* Sun-differences:: Differences between GNU stabs and Sun
|
* Sun differences:: Differences between GNU stabs and Sun
|
||||||
native stabs
|
native stabs
|
||||||
* Stabs-in-ELF:: Stabs in an ELF file.
|
* Stabs in ELF:: Stabs in an ELF file.
|
||||||
* Symbol Types Index:: Index of symbolic stab symbol type names.
|
* Symbol Types Index:: Index of symbolic stab symbol type names.
|
||||||
@end menu
|
@end menu
|
||||||
@end ifinfo
|
@end ifinfo
|
||||||
@ -100,8 +100,8 @@ debugger; the format has spread widely since then.
|
|||||||
|
|
||||||
This document is one of the few published sources of documentation on
|
This document is one of the few published sources of documentation on
|
||||||
stabs. It is believed to be comprehensive for stabs used by C. The
|
stabs. It is believed to be comprehensive for stabs used by C. The
|
||||||
lists of symbol descriptors (@pxref{Symbol Descriptors}) and type
|
lists of symbol descriptors (@pxref{Symbol descriptors}) and type
|
||||||
descriptors (@pxref{Type Descriptors}) are believed to be completely
|
descriptors (@pxref{Type descriptors}) are believed to be completely
|
||||||
comprehensive. Stabs for COBOL-specific features and for variant
|
comprehensive. Stabs for COBOL-specific features and for variant
|
||||||
records (used by Pascal and Modula-2) are poorly documented here.
|
records (used by Pascal and Modula-2) are poorly documented here.
|
||||||
|
|
||||||
@ -114,8 +114,8 @@ you to them for more information.
|
|||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Flow:: Overview of debugging information flow
|
* Flow:: Overview of debugging information flow
|
||||||
* Stabs Format:: Overview of stab format
|
* Stabs format:: Overview of stab format
|
||||||
* String Field:: The @code{.stabs} @var{string} field
|
* String field:: The @code{.stabs} @var{string} field
|
||||||
* C example:: A simple example in C source
|
* C example:: A simple example in C source
|
||||||
* Assembly code:: The simple example at the assembly level
|
* Assembly code:: The simple example at the assembly level
|
||||||
@end menu
|
@end menu
|
||||||
@ -149,7 +149,7 @@ files into one executable file, with one symbol table and one string
|
|||||||
table. Debuggers use the symbol and string tables in the executable as
|
table. Debuggers use the symbol and string tables in the executable as
|
||||||
a source of debugging information about the program.
|
a source of debugging information about the program.
|
||||||
|
|
||||||
@node Stabs Format
|
@node Stabs format
|
||||||
@section Overview of stab format
|
@section Overview of stab format
|
||||||
|
|
||||||
There are three overall formats for stab assembler directives,
|
There are three overall formats for stab assembler directives,
|
||||||
@ -172,7 +172,7 @@ The overall format of each class of stab is:
|
|||||||
@c what is the correct term for "current file location"? My AIX
|
@c what is the correct term for "current file location"? My AIX
|
||||||
@c assembler manual calls it "the value of the current location counter".
|
@c assembler manual calls it "the value of the current location counter".
|
||||||
For @code{.stabn} and @code{.stabd}, there is no @var{string} (the
|
For @code{.stabn} and @code{.stabd}, there is no @var{string} (the
|
||||||
@code{n_strx} field is zero; see @ref{Symbol Tables}). For
|
@code{n_strx} field is zero; see @ref{Symbol tables}). For
|
||||||
@code{.stabd}, the @var{value} field is implicit and has the value of
|
@code{.stabd}, the @var{value} field is implicit and has the value of
|
||||||
the current file location. For @code{.stabx}, the @var{sdb-type} field
|
the current file location. For @code{.stabx}, the @var{sdb-type} field
|
||||||
is unused for stabs and can always be set to zero.
|
is unused for stabs and can always be set to zero.
|
||||||
@ -182,10 +182,10 @@ which type of stab this is (or whether it @emph{is} a stab, as opposed
|
|||||||
to an ordinary symbol). Each valid type number defines a different stab
|
to an ordinary symbol). Each valid type number defines a different stab
|
||||||
type; further, the stab type defines the exact interpretation of, and
|
type; further, the stab type defines the exact interpretation of, and
|
||||||
possible values for, any remaining @var{string}, @var{desc}, or
|
possible values for, any remaining @var{string}, @var{desc}, or
|
||||||
@var{value} fields present in the stab. @xref{Stab Types}, for a list
|
@var{value} fields present in the stab. @xref{Stab types}, for a list
|
||||||
in numeric order of the valid @var{type} field values for stab directives.
|
in numeric order of the valid @var{type} field values for stab directives.
|
||||||
|
|
||||||
@node String Field
|
@node String field
|
||||||
@section The @code{.stabs} @var{string} field
|
@section The @code{.stabs} @var{string} field
|
||||||
|
|
||||||
For @code{.stabs} the @var{string} field holds the meat of the
|
For @code{.stabs} the @var{string} field holds the meat of the
|
||||||
@ -213,7 +213,7 @@ The @var{symbol-descriptor} following the @samp{:} is an alphabetic
|
|||||||
character that tells more specifically what kind of symbol the stab
|
character that tells more specifically what kind of symbol the stab
|
||||||
represents. If the @var{symbol-descriptor} is omitted, but type
|
represents. If the @var{symbol-descriptor} is omitted, but type
|
||||||
information follows, then the stab represents a local variable. For a
|
information follows, then the stab represents a local variable. For a
|
||||||
list of symbol descriptors, see @ref{Symbol Descriptors}. The @samp{c}
|
list of symbol descriptors, see @ref{Symbol descriptors}. The @samp{c}
|
||||||
symbol descriptor is an exception in that it is not followed by type
|
symbol descriptor is an exception in that it is not followed by type
|
||||||
information. @xref{Constants}.
|
information. @xref{Constants}.
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ In a type definition, if the character that follows the equals sign is
|
|||||||
non-numeric then it is a @var{type-descriptor}, and tells what kind of
|
non-numeric then it is a @var{type-descriptor}, and tells what kind of
|
||||||
type is about to be defined. Any other values following the
|
type is about to be defined. Any other values following the
|
||||||
@var{type-descriptor} vary, depending on the @var{type-descriptor}.
|
@var{type-descriptor} vary, depending on the @var{type-descriptor}.
|
||||||
@xref{Type Descriptors}, for a list of @var{type-descriptor} values. If
|
@xref{Type descriptors}, for a list of @var{type-descriptor} values. If
|
||||||
a number follows the @samp{=} then the number is a @var{type-reference}.
|
a number follows the @samp{=} then the number is a @var{type-reference}.
|
||||||
For a full description of types, @ref{Types}.
|
For a full description of types, @ref{Types}.
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ types used to describe C language source files.
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Program structure
|
@node Program structure
|
||||||
@chapter Encoding for the structure of the program
|
@chapter Encoding the structure of the program
|
||||||
|
|
||||||
The elements of the program structure that stabs encode include the name
|
The elements of the program structure that stabs encode include the name
|
||||||
of the main function, the names of the source and include files, the
|
of the main function, the names of the source and include files, the
|
||||||
@ -361,17 +361,17 @@ line numbers, procedure names and types, and the beginnings and ends of
|
|||||||
blocks of code.
|
blocks of code.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Main Program:: Indicate what the main program is
|
* Main program:: Indicate what the main program is
|
||||||
* Source Files:: The path and name of the source file
|
* Source files:: The path and name of the source file
|
||||||
* Include Files:: Names of include files
|
* Include files:: Names of include files
|
||||||
* Line Numbers::
|
* Line numbers::
|
||||||
* Procedures::
|
* Procedures::
|
||||||
* Nested Procedures::
|
* Nested procedures::
|
||||||
* Block Structure::
|
* Block structure::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Main Program
|
@node Main program
|
||||||
@section Main Program
|
@section Main program
|
||||||
|
|
||||||
@deffn @code{.stabs} N_MAIN
|
@deffn @code{.stabs} N_MAIN
|
||||||
@findex N_MAIN
|
@findex N_MAIN
|
||||||
@ -384,7 +384,7 @@ but some C compilers emit an @code{N_MAIN} stab for the @code{main}
|
|||||||
function.
|
function.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Source Files
|
@node Source files
|
||||||
@section Paths and names of the source files
|
@section Paths and names of the source files
|
||||||
|
|
||||||
@deffn @code{.stabs} N_SO
|
@deffn @code{.stabs} N_SO
|
||||||
@ -421,7 +421,7 @@ Instead of @code{N_SO} symbols, XCOFF uses a @code{.file} assembler
|
|||||||
directive which assembles to a standard COFF @code{.file} symbol;
|
directive which assembles to a standard COFF @code{.file} symbol;
|
||||||
explaining this in detail is outside the scope of this document.
|
explaining this in detail is outside the scope of this document.
|
||||||
|
|
||||||
@node Include Files
|
@node Include files
|
||||||
@section Names of include files
|
@section Names of include files
|
||||||
|
|
||||||
There are several schemes for dealing with include files: the
|
There are several schemes for dealing with include files: the
|
||||||
@ -478,8 +478,8 @@ of the portion of the COFF line table that corresponds to this include
|
|||||||
file. @code{C_BINCL} and @code{C_EINCL} do not nest.
|
file. @code{C_BINCL} and @code{C_EINCL} do not nest.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Line Numbers
|
@node Line numbers
|
||||||
@section Line Numbers
|
@section Line numbers
|
||||||
|
|
||||||
@deffn @code{.stabn} N_SLINE
|
@deffn @code{.stabn} N_SLINE
|
||||||
@findex N_SLINE
|
@findex N_SLINE
|
||||||
@ -556,7 +556,7 @@ Solaris compiler uses symbol descriptor @samp{P} followed by the return
|
|||||||
type of the function, followed by the arguments, each preceded by
|
type of the function, followed by the arguments, each preceded by
|
||||||
@samp{;}, as in a stab with symbol descriptor @samp{f} or @samp{F}.
|
@samp{;}, as in a stab with symbol descriptor @samp{f} or @samp{F}.
|
||||||
This use of symbol descriptor @samp{P} can be distinguished from its use
|
This use of symbol descriptor @samp{P} can be distinguished from its use
|
||||||
for register parameters (@pxref{Register Parameters}) by the fact that it has
|
for register parameters (@pxref{Register parameters}) by the fact that it has
|
||||||
symbol type @code{N_FUN}.
|
symbol type @code{N_FUN}.
|
||||||
|
|
||||||
The AIX documentation also defines symbol descriptor @samp{J} as an
|
The AIX documentation also defines symbol descriptor @samp{J} as an
|
||||||
@ -606,8 +606,8 @@ stabs describe the procedure's parameters, its block local variables, and
|
|||||||
its block structure.
|
its block structure.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Nested Procedures
|
@node Nested procedures
|
||||||
@section Nested Procedures
|
@section Nested procedures
|
||||||
|
|
||||||
For any of the @code{N_FUN} symbol descriptors, after the symbol
|
For any of the @code{N_FUN} symbol descriptors, after the symbol
|
||||||
descriptor and the type information is optionally a scope specifier.
|
descriptor and the type information is optionally a scope specifier.
|
||||||
@ -645,8 +645,8 @@ produces the stabs:
|
|||||||
.stabs "foo:F1",36,0,0,_foo
|
.stabs "foo:F1",36,0,0,_foo
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Block Structure
|
@node Block structure
|
||||||
@section Block Structure
|
@section Block structure
|
||||||
|
|
||||||
@deffn @code{.stabn} N_LBRAC
|
@deffn @code{.stabn} N_LBRAC
|
||||||
@deffnx @code{.stabn} N_RBRAC
|
@deffnx @code{.stabn} N_RBRAC
|
||||||
@ -693,7 +693,7 @@ Character constant. @var{value} is the numeric value of the constant.
|
|||||||
@item e @var{type-information} , @var{value}
|
@item e @var{type-information} , @var{value}
|
||||||
Constant whose value can be represented as integral.
|
Constant whose value can be represented as integral.
|
||||||
@var{type-information} is the type of the constant, as it would appear
|
@var{type-information} is the type of the constant, as it would appear
|
||||||
after a symbol descriptor (@pxref{String Field}). @var{value} is the
|
after a symbol descriptor (@pxref{String field}). @var{value} is the
|
||||||
numeric value of the constant. GDB 4.9 does not actually get the right
|
numeric value of the constant. GDB 4.9 does not actually get the right
|
||||||
value if @var{value} does not fit in a host @code{int}, but it does not
|
value if @var{value} does not fit in a host @code{int}, but it does not
|
||||||
do anything violent, and future debuggers could be extended to accept
|
do anything violent, and future debuggers could be extended to accept
|
||||||
@ -721,7 +721,7 @@ string are represented as @samp{\"}).
|
|||||||
|
|
||||||
@item S @var{type-information} , @var{elements} , @var{bits} , @var{pattern}
|
@item S @var{type-information} , @var{elements} , @var{bits} , @var{pattern}
|
||||||
Set constant. @var{type-information} is the type of the constant, as it
|
Set constant. @var{type-information} is the type of the constant, as it
|
||||||
would appear after a symbol descriptor (@pxref{String Field}).
|
would appear after a symbol descriptor (@pxref{String field}).
|
||||||
@var{elements} is the number of elements in the set (does this means
|
@var{elements} is the number of elements in the set (does this means
|
||||||
how many bits of @var{pattern} are actually used, which would be
|
how many bits of @var{pattern} are actually used, which would be
|
||||||
redundant with the type, or perhaps the number of bits set in
|
redundant with the type, or perhaps the number of bits set in
|
||||||
@ -749,16 +749,16 @@ allocated: on the stack, globally, in registers, in common blocks,
|
|||||||
statically, or as arguments to a function.
|
statically, or as arguments to a function.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Stack Variables:: Variables allocated on the stack.
|
* Stack variables:: Variables allocated on the stack.
|
||||||
* Global Variables:: Variables used by more than one source file.
|
* Global variables:: Variables used by more than one source file.
|
||||||
* Register variables:: Variables in registers.
|
* Register variables:: Variables in registers.
|
||||||
* Common Blocks:: Variables statically allocated together.
|
* Common blocks:: Variables statically allocated together.
|
||||||
* Statics:: Variables local to one source file.
|
* Statics:: Variables local to one source file.
|
||||||
* Parameters:: Variables for arguments to functions.
|
* Parameters:: Variables for arguments to functions.
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Stack Variables
|
@node Stack variables
|
||||||
@section Automatic Variables Allocated on the Stack
|
@section Automatic variables allocated on the stack
|
||||||
|
|
||||||
If a variable's scope is local to a function and its lifetime is only as
|
If a variable's scope is local to a function and its lifetime is only as
|
||||||
long as that function executes (C calls such variables
|
long as that function executes (C calls such variables
|
||||||
@ -779,7 +779,7 @@ symbol descriptors.
|
|||||||
The @var{value} of the stab is the offset of the variable within the
|
The @var{value} of the stab is the offset of the variable within the
|
||||||
local variables. On most machines this is an offset from the frame
|
local variables. On most machines this is an offset from the frame
|
||||||
pointer and is negative. The location of the stab specifies which block
|
pointer and is negative. The location of the stab specifies which block
|
||||||
it is defined in; see @ref{Block Structure}.
|
it is defined in; see @ref{Block structure}.
|
||||||
|
|
||||||
For example, the following C code:
|
For example, the following C code:
|
||||||
|
|
||||||
@ -801,19 +801,19 @@ produces the following stabs:
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
@xref{Procedures} for more information on the @code{N_FUN} stab, and
|
@xref{Procedures} for more information on the @code{N_FUN} stab, and
|
||||||
@ref{Block Structure} for more information on the @code{N_LBRAC} and
|
@ref{Block structure} for more information on the @code{N_LBRAC} and
|
||||||
@code{N_RBRAC} stabs.
|
@code{N_RBRAC} stabs.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Global Variables
|
@node Global variables
|
||||||
@section Global Variables
|
@section Global variables
|
||||||
|
|
||||||
@deffn @code{.stabs} N_GSYM
|
@deffn @code{.stabs} N_GSYM
|
||||||
@findex N_GSYM
|
@findex N_GSYM
|
||||||
A variable whose scope is not specific to just one source file is
|
A variable whose scope is not specific to just one source file is
|
||||||
represented by the @samp{G} symbol descriptor. These stabs use the
|
represented by the @samp{G} symbol descriptor. These stabs use the
|
||||||
@code{N_GSYM} stab type. The type information for the stab
|
@code{N_GSYM} stab type. The type information for the stab
|
||||||
(@pxref{String Field}) gives the type of the variable.
|
(@pxref{String field}) gives the type of the variable.
|
||||||
|
|
||||||
For example, the following source code:
|
For example, the following source code:
|
||||||
|
|
||||||
@ -868,8 +868,8 @@ then the stab may be emitted at the end of the object file, with
|
|||||||
the other bss symbols.
|
the other bss symbols.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Common Blocks
|
@node Common blocks
|
||||||
@section Common Blocks
|
@section Common blocks
|
||||||
|
|
||||||
A common block is a statically allocated section of memory which can be
|
A common block is a statically allocated section of memory which can be
|
||||||
referred to by several source files. It may contain several variables.
|
referred to by several source files. It may contain several variables.
|
||||||
@ -898,7 +898,7 @@ block @emph{can} be anything other than local to a function).
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node Statics
|
@node Statics
|
||||||
@section Static Variables
|
@section Static variables
|
||||||
|
|
||||||
Initialized static variables are represented by the @samp{S} and
|
Initialized static variables are represented by the @samp{S} and
|
||||||
@samp{V} symbol descriptors. @samp{S} means file scope static, and
|
@samp{V} symbol descriptors. @samp{S} means file scope static, and
|
||||||
@ -988,13 +988,13 @@ several type definitions. Type 21 is pointer to type 2 (char) and
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Register Parameters::
|
* Register parameters::
|
||||||
* Local Variable Parameters::
|
* Local variable parameters::
|
||||||
* Reference Parameters::
|
* Reference parameters::
|
||||||
* Conformant Arrays::
|
* Conformant arrays::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Register Parameters
|
@node Register parameters
|
||||||
@subsection Passing parameters in registers
|
@subsection Passing parameters in registers
|
||||||
|
|
||||||
If the parameter is passed in a register, then traditionally there are
|
If the parameter is passed in a register, then traditionally there are
|
||||||
@ -1041,9 +1041,9 @@ case (it is said to mean "value parameter by reference, indirect
|
|||||||
access"; I don't know the source for this information), but I don't know
|
access"; I don't know the source for this information), but I don't know
|
||||||
details or what compilers or debuggers use it, if any (not GDB or GCC).
|
details or what compilers or debuggers use it, if any (not GDB or GCC).
|
||||||
It is not clear to me whether this case needs to be dealt with
|
It is not clear to me whether this case needs to be dealt with
|
||||||
differently than parameters passed by reference (@pxref{Reference Parameters}).
|
differently than parameters passed by reference (@pxref{Reference parameters}).
|
||||||
|
|
||||||
@node Local Variable Parameters
|
@node Local variable parameters
|
||||||
@subsection Storing parameters as local variables
|
@subsection Storing parameters as local variables
|
||||||
|
|
||||||
There is a case similar to an argument in a register, which is an
|
There is a case similar to an argument in a register, which is an
|
||||||
@ -1066,7 +1066,7 @@ is an offset relative to the local variables for that function, not
|
|||||||
relative to the arguments; on some machines those are the same thing,
|
relative to the arguments; on some machines those are the same thing,
|
||||||
but not on all.
|
but not on all.
|
||||||
|
|
||||||
@node Reference Parameters
|
@node Reference parameters
|
||||||
@subsection Passing parameters by reference
|
@subsection Passing parameters by reference
|
||||||
|
|
||||||
If the parameter is passed by reference (e.g., Pascal @code{VAR}
|
If the parameter is passed by reference (e.g., Pascal @code{VAR}
|
||||||
@ -1077,7 +1077,7 @@ parameter itself, they are identical to @samp{p} and @samp{R},
|
|||||||
respectively. I believe @samp{a} is an AIX invention; @samp{v} is
|
respectively. I believe @samp{a} is an AIX invention; @samp{v} is
|
||||||
supported by all stabs-using systems as far as I know.
|
supported by all stabs-using systems as far as I know.
|
||||||
|
|
||||||
@node Conformant Arrays
|
@node Conformant arrays
|
||||||
@subsection Passing conformant array parameters
|
@subsection Passing conformant array parameters
|
||||||
|
|
||||||
@c Is this paragraph correct? It is based on piecing together patchy
|
@c Is this paragraph correct? It is based on piecing together patchy
|
||||||
@ -1093,7 +1093,7 @@ argument list where the size of the array (in elements? in bytes?) is
|
|||||||
stored.
|
stored.
|
||||||
|
|
||||||
@node Types
|
@node Types
|
||||||
@chapter Defining Types
|
@chapter Defining types
|
||||||
|
|
||||||
The examples so far have described types as references to previously
|
The examples so far have described types as references to previously
|
||||||
defined types, or defined in terms of subranges of or pointers to
|
defined types, or defined in terms of subranges of or pointers to
|
||||||
@ -1102,7 +1102,7 @@ descriptors that may follow the @samp{=} in a type definition.
|
|||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Builtin types:: Integers, floating point, void, etc.
|
* Builtin types:: Integers, floating point, void, etc.
|
||||||
* Miscellaneous Types:: Pointers, sets, files, etc.
|
* Miscellaneous types:: Pointers, sets, files, etc.
|
||||||
* Cross-references:: Referring to a type not yet defined.
|
* Cross-references:: Referring to a type not yet defined.
|
||||||
* Subranges:: A type with a specific range.
|
* Subranges:: A type with a specific range.
|
||||||
* Arrays:: An aggregate type of same-typed elements.
|
* Arrays:: An aggregate type of same-typed elements.
|
||||||
@ -1111,7 +1111,7 @@ descriptors that may follow the @samp{=} in a type definition.
|
|||||||
* Structures:: An aggregate type of different-typed elements.
|
* Structures:: An aggregate type of different-typed elements.
|
||||||
* Typedefs:: Giving a type a name.
|
* Typedefs:: Giving a type a name.
|
||||||
* Unions:: Different types sharing storage.
|
* Unions:: Different types sharing storage.
|
||||||
* Function Types::
|
* Function types::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Builtin types
|
@node Builtin types
|
||||||
@ -1132,25 +1132,25 @@ accepts the traditional builtin types and perhaps one of the other two
|
|||||||
formats. The following sections describe each of these formats.
|
formats. The following sections describe each of these formats.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Traditional Builtin Types:: Put on your seatbelts and prepare for kludgery
|
* Traditional builtin types:: Put on your seatbelts and prepare for kludgery
|
||||||
* Builtin Type Descriptors:: Builtin types with special type descriptors
|
* Builtin type descriptors:: Builtin types with special type descriptors
|
||||||
* Negative Type Numbers:: Builtin types using negative type numbers
|
* Negative type numbers:: Builtin types using negative type numbers
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Traditional Builtin Types
|
@node Traditional builtin types
|
||||||
@subsection Traditional Builtin types
|
@subsection Traditional builtin types
|
||||||
|
|
||||||
This is the traditional, convoluted method for defining builtin types.
|
This is the traditional, convoluted method for defining builtin types.
|
||||||
There are several classes of such type definitions: integer, floating
|
There are several classes of such type definitions: integer, floating
|
||||||
point, and @code{void}.
|
point, and @code{void}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Traditional Integer Types::
|
* Traditional integer types::
|
||||||
* Traditional Other Types::
|
* Traditional other types::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Traditional Integer Types
|
@node Traditional integer types
|
||||||
@subsubsection Traditional Integer Types
|
@subsubsection Traditional integer types
|
||||||
|
|
||||||
Often types are defined as subranges of themselves. If the bounding values
|
Often types are defined as subranges of themselves. If the bounding values
|
||||||
fit within an @code{int}, then they are given normally. For example:
|
fit within an @code{int}, then they are given normally. For example:
|
||||||
@ -1197,8 +1197,8 @@ convention for @code{long long}. To distinguish this from a legitimate
|
|||||||
subrange, the type should be a subrange of itself. I'm not sure whether
|
subrange, the type should be a subrange of itself. I'm not sure whether
|
||||||
this is the case for Convex.
|
this is the case for Convex.
|
||||||
|
|
||||||
@node Traditional Other Types
|
@node Traditional other types
|
||||||
@subsubsection Traditional Other Types
|
@subsubsection Traditional other types
|
||||||
|
|
||||||
If the upper bound of a subrange is 0 and the lower bound is positive,
|
If the upper bound of a subrange is 0 and the lower bound is positive,
|
||||||
the type is a floating point type, and the lower bound of the subrange
|
the type is a floating point type, and the lower bound of the subrange
|
||||||
@ -1228,8 +1228,8 @@ The C @code{void} type is defined as itself:
|
|||||||
|
|
||||||
I'm not sure how a boolean type is represented.
|
I'm not sure how a boolean type is represented.
|
||||||
|
|
||||||
@node Builtin Type Descriptors
|
@node Builtin type descriptors
|
||||||
@subsection Defining Builtin Types using Builtin Type Descriptors
|
@subsection Defining builtin types using builtin type descriptors
|
||||||
|
|
||||||
This is the method used by Sun's @code{acc} for defining builtin types.
|
This is the method used by Sun's @code{acc} for defining builtin types.
|
||||||
These are the type descriptors to define builtin types:
|
These are the type descriptors to define builtin types:
|
||||||
@ -1252,14 +1252,14 @@ type. @var{offset} seems to always be zero. @var{nbits} is the number
|
|||||||
of bits in the type.
|
of bits in the type.
|
||||||
|
|
||||||
Note that type descriptor @samp{b} used for builtin types conflicts with
|
Note that type descriptor @samp{b} used for builtin types conflicts with
|
||||||
its use for Pascal space types (@pxref{Miscellaneous Types}); they can
|
its use for Pascal space types (@pxref{Miscellaneous types}); they can
|
||||||
be distinguished because the character following the type descriptor
|
be distinguished because the character following the type descriptor
|
||||||
will be a digit, @samp{(}, or @samp{-} for a Pascal space type, or
|
will be a digit, @samp{(}, or @samp{-} for a Pascal space type, or
|
||||||
@samp{u} or @samp{s} for a builtin type.
|
@samp{u} or @samp{s} for a builtin type.
|
||||||
|
|
||||||
@item w
|
@item w
|
||||||
Documented by AIX to define a wide character type, but their compiler
|
Documented by AIX to define a wide character type, but their compiler
|
||||||
actually uses negative type numbers (@pxref{Negative Type Numbers}).
|
actually uses negative type numbers (@pxref{Negative type numbers}).
|
||||||
|
|
||||||
@item R @var{fp-type} ; @var{bytes} ;
|
@item R @var{fp-type} ; @var{bytes} ;
|
||||||
Define a floating point type. @var{fp-type} has one of the following values:
|
Define a floating point type. @var{fp-type} has one of the following values:
|
||||||
@ -1294,11 +1294,11 @@ understand @var{fp-type}.
|
|||||||
|
|
||||||
@item g @var{type-information} ; @var{nbits}
|
@item g @var{type-information} ; @var{nbits}
|
||||||
Documented by AIX to define a floating type, but their compiler actually
|
Documented by AIX to define a floating type, but their compiler actually
|
||||||
uses negative type numbers (@pxref{Negative Type Numbers}).
|
uses negative type numbers (@pxref{Negative type numbers}).
|
||||||
|
|
||||||
@item c @var{type-information} ; @var{nbits}
|
@item c @var{type-information} ; @var{nbits}
|
||||||
Documented by AIX to define a complex type, but their compiler actually
|
Documented by AIX to define a complex type, but their compiler actually
|
||||||
uses negative type numbers (@pxref{Negative Type Numbers}).
|
uses negative type numbers (@pxref{Negative type numbers}).
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
The C @code{void} type is defined as a signed integral type 0 bits long:
|
The C @code{void} type is defined as a signed integral type 0 bits long:
|
||||||
@ -1312,8 +1312,8 @@ where it ends.
|
|||||||
|
|
||||||
I'm not sure how a boolean type is represented.
|
I'm not sure how a boolean type is represented.
|
||||||
|
|
||||||
@node Negative Type Numbers
|
@node Negative type numbers
|
||||||
@subsection Negative Type numbers
|
@subsection Negative type numbers
|
||||||
|
|
||||||
This is the method used in XCOFF for defining builtin types.
|
This is the method used in XCOFF for defining builtin types.
|
||||||
Since the debugger knows about the builtin types anyway, the idea of
|
Since the debugger knows about the builtin types anyway, the idea of
|
||||||
@ -1454,8 +1454,8 @@ floating point values.
|
|||||||
Unicode?).
|
Unicode?).
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Miscellaneous Types
|
@node Miscellaneous types
|
||||||
@section Miscellaneous Types
|
@section Miscellaneous types
|
||||||
|
|
||||||
These type descriptors are for types that are built into languages and
|
These type descriptors are for types that are built into languages and
|
||||||
are derived from the fundamental types.
|
are derived from the fundamental types.
|
||||||
@ -1465,8 +1465,8 @@ are derived from the fundamental types.
|
|||||||
Pascal space type. This is documented by IBM; what does it mean?
|
Pascal space type. This is documented by IBM; what does it mean?
|
||||||
|
|
||||||
This use of the @samp{b} type descriptor can be distinguished
|
This use of the @samp{b} type descriptor can be distinguished
|
||||||
from its use for builtin integral types (@pxref{Builtin Type
|
from its use for builtin integral types (@pxref{Builtin type
|
||||||
Descriptors}) because the character following the type descriptor is
|
descriptors}) because the character following the type descriptor is
|
||||||
always a digit, @samp{(}, or @samp{-}.
|
always a digit, @samp{(}, or @samp{-}.
|
||||||
|
|
||||||
@item B @var{type-information}
|
@item B @var{type-information}
|
||||||
@ -1488,7 +1488,7 @@ modified.
|
|||||||
Multiple instance type. The type seems to composed of @var{length}
|
Multiple instance type. The type seems to composed of @var{length}
|
||||||
repetitions of @var{type-information}, for example @code{character*3} is
|
repetitions of @var{type-information}, for example @code{character*3} is
|
||||||
represented by @samp{M-2;3}, where @samp{-2} is a reference to a
|
represented by @samp{M-2;3}, where @samp{-2} is a reference to a
|
||||||
character type (@pxref{Negative Type Numbers}). I'm not sure how this
|
character type (@pxref{Negative type numbers}). I'm not sure how this
|
||||||
differs from an array. This appears to be a Fortran feature.
|
differs from an array. This appears to be a Fortran feature.
|
||||||
@var{length} is a bound, like those in range types; see @ref{Subranges}.
|
@var{length} is a bound, like those in range types; see @ref{Subranges}.
|
||||||
|
|
||||||
@ -1538,7 +1538,7 @@ the type. This differs from merely naming the type (@pxref{Typedefs}) in
|
|||||||
that it identifies the module; I don't understand whether the name of
|
that it identifies the module; I don't understand whether the name of
|
||||||
the type given here is always just the same as the name we are giving
|
the type given here is always just the same as the name we are giving
|
||||||
it, or whether this type descriptor is used with a nameless stab
|
it, or whether this type descriptor is used with a nameless stab
|
||||||
(@pxref{String Field}), or what. The symbol ends with @samp{;}.
|
(@pxref{String field}), or what. The symbol ends with @samp{;}.
|
||||||
|
|
||||||
@node Subranges
|
@node Subranges
|
||||||
@section Subrange types
|
@section Subrange types
|
||||||
@ -1574,7 +1574,7 @@ The bound is passed by value in register number @var{register-number}.
|
|||||||
There is no bound.
|
There is no bound.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
Subranges are also used for builtin types; see @ref{Traditional Builtin Types}.
|
Subranges are also used for builtin types; see @ref{Traditional builtin types}.
|
||||||
|
|
||||||
@node Arrays
|
@node Arrays
|
||||||
@section Array types
|
@section Array types
|
||||||
@ -1596,7 +1596,7 @@ range anyway; I'm not sure about dbx.
|
|||||||
|
|
||||||
It is well established, and widely used, that the type of the index,
|
It is well established, and widely used, that the type of the index,
|
||||||
unlike most types found in the stabs, is merely a type definition, not
|
unlike most types found in the stabs, is merely a type definition, not
|
||||||
type information (@pxref{String Field}) (that is, it need not start with
|
type information (@pxref{String field}) (that is, it need not start with
|
||||||
@samp{@var{type-number}=} if it is defining a new type). According to a
|
@samp{@var{type-number}=} if it is defining a new type). According to a
|
||||||
comment in GDB, this is also true of the type of the array elements; it
|
comment in GDB, this is also true of the type of the array elements; it
|
||||||
gives @samp{ar1;1;10;ar1;1;10;4} as a legitimate way to express a two
|
gives @samp{ar1;1;10;ar1;1;10;4} as a legitimate way to express a two
|
||||||
@ -1634,7 +1634,7 @@ closely than normal, saving memory at the expense of speed. For
|
|||||||
example, an array of 3-byte objects might, if unpacked, have each
|
example, an array of 3-byte objects might, if unpacked, have each
|
||||||
element aligned on a 4-byte boundary, but if packed, have no padding.
|
element aligned on a 4-byte boundary, but if packed, have no padding.
|
||||||
One way to specify that something is packed is with type attributes
|
One way to specify that something is packed is with type attributes
|
||||||
(@pxref{String Field}). In the case of arrays, another is to use the
|
(@pxref{String field}). In the case of arrays, another is to use the
|
||||||
@samp{P} type descriptor instead of @samp{a}. Other than specifying a
|
@samp{P} type descriptor instead of @samp{a}. Other than specifying a
|
||||||
packed array, @samp{P} is identical to @samp{a}.
|
packed array, @samp{P} is identical to @samp{a}.
|
||||||
|
|
||||||
@ -1728,7 +1728,7 @@ There is no standard way to specify the size of an enumeration type; it
|
|||||||
is determined by the architecture (normally all enumerations types are
|
is determined by the architecture (normally all enumerations types are
|
||||||
32 bits). There should be a way to specify an enumeration type of
|
32 bits). There should be a way to specify an enumeration type of
|
||||||
another size; type attributes would be one way to do this. @xref{Stabs
|
another size; type attributes would be one way to do this. @xref{Stabs
|
||||||
Format}.
|
format}.
|
||||||
|
|
||||||
@node Structures
|
@node Structures
|
||||||
@section Structures
|
@section Structures
|
||||||
@ -1793,10 +1793,10 @@ 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.
|
||||||
|
|
||||||
@node Typedefs
|
@node Typedefs
|
||||||
@section Giving a Type a Name
|
@section Giving a type a name
|
||||||
|
|
||||||
To give a type a name, use the @samp{t} symbol descriptor. The type
|
To give a type a name, use the @samp{t} symbol descriptor. The type
|
||||||
is specified by the type information (@pxref{String Field}) for the stab.
|
is specified by the type information (@pxref{String field}) for the stab.
|
||||||
For example,
|
For example,
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@ -1814,7 +1814,7 @@ If the type is an opaque type (I believe this is a Modula-2 feature),
|
|||||||
AIX provides a type descriptor to specify it. The type descriptor is
|
AIX provides a type descriptor to specify it. The type descriptor is
|
||||||
@samp{o} and is followed by a name. I don't know what the name
|
@samp{o} and is followed by a name. I don't know what the name
|
||||||
means---is it always the same as the name of the type, or is this type
|
means---is it always the same as the name of the type, or is this type
|
||||||
descriptor used with a nameless stab (@pxref{String Field})? There
|
descriptor used with a nameless stab (@pxref{String field})? There
|
||||||
optionally follows a comma followed by type information which defines
|
optionally follows a comma followed by type information which defines
|
||||||
the type of this type. If omitted, a semicolon is used in place of the
|
the type of this type. If omitted, a semicolon is used in place of the
|
||||||
comma and the type information, and the type is much like a generic
|
comma and the type information, and the type is much like a generic
|
||||||
@ -1877,7 +1877,7 @@ The stab for the union variable is:
|
|||||||
.stabs "an_u:23",128,0,0,-20
|
.stabs "an_u:23",128,0,0,-20
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Function Types
|
@node Function types
|
||||||
@section Function types
|
@section Function types
|
||||||
|
|
||||||
Various types can be defined for function variables. These types are
|
Various types can be defined for function variables. These types are
|
||||||
@ -1920,7 +1920,7 @@ generates the following code:
|
|||||||
The variable defines a new type, 24, which is a pointer to another new
|
The variable defines a new type, 24, which is a pointer to another new
|
||||||
type, 25, which is a function returning @code{int}.
|
type, 25, which is a function returning @code{int}.
|
||||||
|
|
||||||
@node Symbol Tables
|
@node Symbol tables
|
||||||
@chapter Symbol information in symbol tables
|
@chapter Symbol information in symbol tables
|
||||||
|
|
||||||
This chapter describes the format of symbol table entries
|
This chapter describes the format of symbol table entries
|
||||||
@ -2067,16 +2067,16 @@ entry now holds an absolute address:
|
|||||||
@chapter GNU C++ stabs
|
@chapter GNU C++ stabs
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Basic Cplusplus types::
|
* Basic cplusplus types::
|
||||||
* Simple classes::
|
* Simple classes::
|
||||||
* Class instance::
|
* Class instance::
|
||||||
* Methods:: Method definition
|
* Methods:: Method definition
|
||||||
* Protections::
|
* Protections::
|
||||||
* Method Modifiers::
|
* Method modifiers::
|
||||||
* Virtual Methods::
|
* Virtual methods::
|
||||||
* Inheritence::
|
* Inheritence::
|
||||||
* Virtual Base Classes::
|
* Virtual base classes::
|
||||||
* Static Members::
|
* Static members::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
Type descriptors added for C++ descriptions:
|
Type descriptors added for C++ descriptions:
|
||||||
@ -2092,13 +2092,13 @@ the field being pointed to. (FIXME: this is acknowledged to be
|
|||||||
gibberish. Can anyone say what really goes here?).
|
gibberish. Can anyone say what really goes here?).
|
||||||
|
|
||||||
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++ 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.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Basic Cplusplus types
|
@node Basic cplusplus types
|
||||||
@section Basic types for C++
|
@section Basic types for C++
|
||||||
|
|
||||||
<< the examples that follow are based on a01.C >>
|
<< the examples that follow are based on a01.C >>
|
||||||
@ -2416,8 +2416,8 @@ descriptors apply to the class name struct tag and struct type.
|
|||||||
pubMeth::24=##12;:f;2A.;;",128,0,0,0
|
pubMeth::24=##12;:f;2A.;;",128,0,0,0
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@node Method Modifiers
|
@node Method modifiers
|
||||||
@section Method Modifiers (const, volatile, const volatile)
|
@section Method modifiers (@code{const}, @code{volatile}, @code{const volatile})
|
||||||
|
|
||||||
<< based on a6.C >>
|
<< based on a6.C >>
|
||||||
|
|
||||||
@ -2455,8 +2455,8 @@ This class is described by the following stab:
|
|||||||
ConstVolMeth::23=##12;:f;2D.;;",128,0,0,0
|
ConstVolMeth::23=##12;:f;2D.;;",128,0,0,0
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Virtual Methods
|
@node Virtual methods
|
||||||
@section Virtual Methods
|
@section Virtual methods
|
||||||
|
|
||||||
<< The following examples are based on a4.C >>
|
<< The following examples are based on a4.C >>
|
||||||
|
|
||||||
@ -2644,8 +2644,8 @@ the derivation of this class is encoded as follows.
|
|||||||
28;;D_virt::32:i;2A*-2147483646;31;;;~%20;",128,0,0,0
|
28;;D_virt::32:i;2A*-2147483646;31;;;~%20;",128,0,0,0
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@node Virtual Base Classes
|
@node Virtual base classes
|
||||||
@section Virtual Base Classes
|
@section Virtual base classes
|
||||||
|
|
||||||
A derived class object consists of a concatination in memory of the data
|
A derived class object consists of a concatination in memory of the data
|
||||||
areas defined by each base class, starting with the leftmost and ending
|
areas defined by each base class, starting with the leftmost and ending
|
||||||
@ -2693,8 +2693,8 @@ class object is a follows, @code{Adat} at 0, the vtable pointer for
|
|||||||
virtual base pointer for @code{B} at 128, and @code{Ddat} at 160.
|
virtual base pointer for @code{B} at 128, and @code{Ddat} at 160.
|
||||||
|
|
||||||
|
|
||||||
@node Static Members
|
@node Static members
|
||||||
@section Static Members
|
@section Static members
|
||||||
|
|
||||||
The data area for a class is a concatenation of the space used by the
|
The data area for a class is a concatenation of the space used by the
|
||||||
data members of the class. If the class has virtual methods, a vtable
|
data members of the class. If the class has virtual methods, a vtable
|
||||||
@ -2703,7 +2703,7 @@ description in the class stab shows this ordering.
|
|||||||
|
|
||||||
<< How is this reflected in stabs? See Cygnus bug #677 for some info. >>
|
<< How is this reflected in stabs? See Cygnus bug #677 for some info. >>
|
||||||
|
|
||||||
@node Stab Types
|
@node Stab types
|
||||||
@appendix Table of stab types
|
@appendix Table of stab types
|
||||||
|
|
||||||
The following are all the possible values for the stab @var{type} field, for
|
The following are all the possible values for the stab @var{type} field, for
|
||||||
@ -2797,7 +2797,7 @@ languages other than C.
|
|||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item 0x20 N_GSYM
|
@item 0x20 N_GSYM
|
||||||
Global symbol; see @ref{Global Variables}.
|
Global symbol; see @ref{Global variables}.
|
||||||
|
|
||||||
@item 0x22 N_FNAME
|
@item 0x22 N_FNAME
|
||||||
Function name (for BSD Fortran); see @ref{N_FNAME}.
|
Function name (for BSD Fortran); see @ref{N_FNAME}.
|
||||||
@ -2813,7 +2813,7 @@ Data segment file-scope variable; see @ref{Statics}.
|
|||||||
BSS segment file-scope variable; see @ref{Statics}.
|
BSS segment file-scope variable; see @ref{Statics}.
|
||||||
|
|
||||||
@item 0x2a N_MAIN
|
@item 0x2a N_MAIN
|
||||||
Name of main routine; see @ref{Main Program}.
|
Name of main routine; see @ref{Main program}.
|
||||||
|
|
||||||
@c FIXME: discuss this in the Statics node where we talk about
|
@c FIXME: discuss this in the Statics node where we talk about
|
||||||
@c the fact that the n_type indicates the section.
|
@c the fact that the n_type indicates the section.
|
||||||
@ -2845,13 +2845,13 @@ Register variable; see @ref{Register variables}.
|
|||||||
Modula-2 compilation unit; see @ref{N_M2C}.
|
Modula-2 compilation unit; see @ref{N_M2C}.
|
||||||
|
|
||||||
@item 0x44 N_SLINE
|
@item 0x44 N_SLINE
|
||||||
Line number in text segment; see @ref{Line Numbers}.
|
Line number in text segment; see @ref{Line numbers}.
|
||||||
|
|
||||||
@item 0x46 N_DSLINE
|
@item 0x46 N_DSLINE
|
||||||
Line number in data segment; see @ref{Line Numbers}.
|
Line number in data segment; see @ref{Line numbers}.
|
||||||
|
|
||||||
@item 0x48 N_BSLINE
|
@item 0x48 N_BSLINE
|
||||||
Line number in bss segment; see @ref{Line Numbers}.
|
Line number in bss segment; see @ref{Line numbers}.
|
||||||
|
|
||||||
@item 0x48 N_BROWS
|
@item 0x48 N_BROWS
|
||||||
Sun source code browser, path to @file{.cb} file; see @ref{N_BROWS}.
|
Sun source code browser, path to @file{.cb} file; see @ref{N_BROWS}.
|
||||||
@ -2878,46 +2878,46 @@ Structure of union element; see @ref{N_SSYM}.
|
|||||||
Last stab for module (Solaris2).
|
Last stab for module (Solaris2).
|
||||||
|
|
||||||
@item 0x64 N_SO
|
@item 0x64 N_SO
|
||||||
Path and name of source file; see @ref{Source Files}.
|
Path and name of source file; see @ref{Source files}.
|
||||||
|
|
||||||
@item 0x80 N_LSYM
|
@item 0x80 N_LSYM
|
||||||
Stack variable (@pxref{Stack Variables}) or type (@pxref{Typedefs}).
|
Stack variable (@pxref{Stack variables}) or type (@pxref{Typedefs}).
|
||||||
|
|
||||||
@item 0x82 N_BINCL
|
@item 0x82 N_BINCL
|
||||||
Beginning of an include file (Sun only); see @ref{Include Files}.
|
Beginning of an include file (Sun only); see @ref{Include files}.
|
||||||
|
|
||||||
@item 0x84 N_SOL
|
@item 0x84 N_SOL
|
||||||
Name of include file; see @ref{Include Files}.
|
Name of include file; see @ref{Include files}.
|
||||||
|
|
||||||
@item 0xa0 N_PSYM
|
@item 0xa0 N_PSYM
|
||||||
Parameter variable; see @ref{Parameters}.
|
Parameter variable; see @ref{Parameters}.
|
||||||
|
|
||||||
@item 0xa2 N_EINCL
|
@item 0xa2 N_EINCL
|
||||||
End of an include file; see @ref{Include Files}.
|
End of an include file; see @ref{Include files}.
|
||||||
|
|
||||||
@item 0xa4 N_ENTRY
|
@item 0xa4 N_ENTRY
|
||||||
Alternate entry point; see @ref{N_ENTRY}.
|
Alternate entry point; see @ref{N_ENTRY}.
|
||||||
|
|
||||||
@item 0xc0 N_LBRAC
|
@item 0xc0 N_LBRAC
|
||||||
Beginning of a lexical block; see @ref{Block Structure}.
|
Beginning of a lexical block; see @ref{Block structure}.
|
||||||
|
|
||||||
@item 0xc2 N_EXCL
|
@item 0xc2 N_EXCL
|
||||||
Place holder for a deleted include file; see @ref{Include Files}.
|
Place holder for a deleted include file; see @ref{Include files}.
|
||||||
|
|
||||||
@item 0xc4 N_SCOPE
|
@item 0xc4 N_SCOPE
|
||||||
Modula2 scope information (Sun linker); see @ref{N_SCOPE}.
|
Modula2 scope information (Sun linker); see @ref{N_SCOPE}.
|
||||||
|
|
||||||
@item 0xe0 N_RBRAC
|
@item 0xe0 N_RBRAC
|
||||||
End of a lexical block; see @ref{Block Structure}.
|
End of a lexical block; see @ref{Block structure}.
|
||||||
|
|
||||||
@item 0xe2 N_BCOMM
|
@item 0xe2 N_BCOMM
|
||||||
Begin named common block; see @ref{Common Blocks}.
|
Begin named common block; see @ref{Common blocks}.
|
||||||
|
|
||||||
@item 0xe4 N_ECOMM
|
@item 0xe4 N_ECOMM
|
||||||
End named common block; see @ref{Common Blocks}.
|
End named common block; see @ref{Common blocks}.
|
||||||
|
|
||||||
@item 0xe8 N_ECOML
|
@item 0xe8 N_ECOML
|
||||||
Member of a common block; see @ref{Common Blocks}.
|
Member of a common block; see @ref{Common blocks}.
|
||||||
|
|
||||||
@c FIXME: How does this really work? Move it to main body of document.
|
@c FIXME: How does this really work? Move it to main body of document.
|
||||||
@item 0xea N_WITH
|
@item 0xea N_WITH
|
||||||
@ -2944,12 +2944,12 @@ Gould non-base registers; see @ref{Gould}.
|
|||||||
@tableindent=.8in
|
@tableindent=.8in
|
||||||
@end iftex
|
@end iftex
|
||||||
|
|
||||||
@node Symbol Descriptors
|
@node Symbol descriptors
|
||||||
@appendix Table of Symbol Descriptors
|
@appendix Table of symbol descriptors
|
||||||
|
|
||||||
These tell in the @code{.stabs} @var{string} field what kind of symbol
|
These tell in the @code{.stabs} @var{string} field what kind of symbol
|
||||||
the stab represents. They follow the colon which follows the symbol
|
the stab represents. They follow the colon which follows the symbol
|
||||||
name. @xref{String Field}, for more information about their use.
|
name. @xref{String field}, for more information about their use.
|
||||||
|
|
||||||
@c Please keep this alphabetical
|
@c Please keep this alphabetical
|
||||||
@table @code
|
@table @code
|
||||||
@ -2960,17 +2960,17 @@ name. @xref{String Field}, for more information about their use.
|
|||||||
@item @var{digit}
|
@item @var{digit}
|
||||||
@itemx (
|
@itemx (
|
||||||
@itemx -
|
@itemx -
|
||||||
Variable on the stack; see @ref{Stack Variables}.
|
Variable on the stack; see @ref{Stack variables}.
|
||||||
|
|
||||||
@item a
|
@item a
|
||||||
Parameter passed by reference in register; see @ref{Reference Parameters}.
|
Parameter passed by reference in register; see @ref{Reference parameters}.
|
||||||
|
|
||||||
@item c
|
@item c
|
||||||
Constant; see @ref{Constants}.
|
Constant; see @ref{Constants}.
|
||||||
|
|
||||||
@item C
|
@item C
|
||||||
Conformant array bound (Pascal, maybe other languages); @ref{Reference
|
Conformant array bound (Pascal, maybe other languages); @ref{Reference
|
||||||
Parameters}. Name of a caught exception (GNU C++). These can be
|
parameters}. Name of a caught exception (GNU C++). 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.
|
||||||
|
|
||||||
@ -2978,7 +2978,7 @@ another symbol type.
|
|||||||
Floating point register variable; see @ref{Register variables}.
|
Floating point register variable; see @ref{Register variables}.
|
||||||
|
|
||||||
@item D
|
@item D
|
||||||
Parameter in floating point register; see @ref{Register Parameters}.
|
Parameter in floating point register; see @ref{Register parameters}.
|
||||||
|
|
||||||
@item f
|
@item f
|
||||||
File scope function; see @ref{Procedures}.
|
File scope function; see @ref{Procedures}.
|
||||||
@ -2987,16 +2987,16 @@ File scope function; see @ref{Procedures}.
|
|||||||
Global function; see @ref{Procedures}.
|
Global function; see @ref{Procedures}.
|
||||||
|
|
||||||
@item G
|
@item G
|
||||||
Global variable; see @ref{Global Variables}.
|
Global variable; see @ref{Global variables}.
|
||||||
|
|
||||||
@item i
|
@item i
|
||||||
@xref{Register Parameters}.
|
@xref{Register parameters}.
|
||||||
|
|
||||||
@item I
|
@item I
|
||||||
Internal (nested) procedure; see @ref{Nested Procedures}.
|
Internal (nested) procedure; see @ref{Nested procedures}.
|
||||||
|
|
||||||
@item J
|
@item J
|
||||||
Internal (nested) function; see @ref{Nested Procedures}.
|
Internal (nested) function; see @ref{Nested procedures}.
|
||||||
|
|
||||||
@item L
|
@item L
|
||||||
Label name (documented by AIX, no further information known).
|
Label name (documented by AIX, no further information known).
|
||||||
@ -3025,7 +3025,7 @@ referenced by this file (Sun @code{acc}) (symbol type @code{N_FUN}).
|
|||||||
Static Procedure; see @ref{Procedures}.
|
Static Procedure; see @ref{Procedures}.
|
||||||
|
|
||||||
@item R
|
@item R
|
||||||
Register parameter; see @ref{Register Parameters}.
|
Register parameter; see @ref{Register parameters}.
|
||||||
|
|
||||||
@item r
|
@item r
|
||||||
Register variable; see @ref{Register variables}.
|
Register variable; see @ref{Register variables}.
|
||||||
@ -3040,44 +3040,44 @@ Type name; see @ref{Typedefs}.
|
|||||||
Enumeration, structure, or union tag; see @ref{Typedefs}.
|
Enumeration, structure, or union tag; see @ref{Typedefs}.
|
||||||
|
|
||||||
@item v
|
@item v
|
||||||
Parameter passed by reference; see @ref{Reference Parameters}.
|
Parameter passed by reference; see @ref{Reference parameters}.
|
||||||
|
|
||||||
@item V
|
@item V
|
||||||
Procedure scope static variable; see @ref{Statics}.
|
Procedure scope static variable; see @ref{Statics}.
|
||||||
|
|
||||||
@item x
|
@item x
|
||||||
Conformant array; see @ref{Conformant Arrays}.
|
Conformant array; see @ref{Conformant arrays}.
|
||||||
|
|
||||||
@item X
|
@item X
|
||||||
Function return variable; see @ref{Parameters}.
|
Function return variable; see @ref{Parameters}.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Type Descriptors
|
@node Type descriptors
|
||||||
@appendix Table of Type Descriptors
|
@appendix Table of type descriptors
|
||||||
|
|
||||||
These tell in the @code{.stabs} @var{string} field what kind of type is being
|
These tell in the @code{.stabs} @var{string} field what kind of type is being
|
||||||
defined. They follow the type number and an equals sign.
|
defined. They follow the type number and an equals sign.
|
||||||
@xref{String Field}, for more information about their use.
|
@xref{String field}, for more information about their use.
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item @var{digit}
|
@item @var{digit}
|
||||||
@itemx (
|
@itemx (
|
||||||
Type reference; see @ref{String Field}.
|
Type reference; see @ref{String field}.
|
||||||
|
|
||||||
@item -
|
@item -
|
||||||
Reference to builtin type; see @ref{Negative Type Numbers}.
|
Reference to builtin type; see @ref{Negative type numbers}.
|
||||||
|
|
||||||
@item #
|
@item #
|
||||||
Method (C++); see @ref{Cplusplus}.
|
Method (C++); see @ref{Cplusplus}.
|
||||||
|
|
||||||
@item *
|
@item *
|
||||||
Pointer; see @ref{Miscellaneous Types}.
|
Pointer; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item &
|
@item &
|
||||||
Reference (C++).
|
Reference (C++).
|
||||||
|
|
||||||
@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{Cplusplus}.
|
type (GNU C++); see @ref{Cplusplus}.
|
||||||
|
|
||||||
@item a
|
@item a
|
||||||
@ -3087,20 +3087,20 @@ Array; see @ref{Arrays}.
|
|||||||
Open array; see @ref{Arrays}.
|
Open array; see @ref{Arrays}.
|
||||||
|
|
||||||
@item b
|
@item b
|
||||||
Pascal space type (AIX); see @ref{Miscellaneous Types}. Builtin integer
|
Pascal space type (AIX); see @ref{Miscellaneous types}. Builtin integer
|
||||||
type (Sun); see @ref{Builtin Type Descriptors}.
|
type (Sun); see @ref{Builtin type descriptors}.
|
||||||
|
|
||||||
@item B
|
@item B
|
||||||
Volatile-qualified type; see @ref{Miscellaneous Types}.
|
Volatile-qualified type; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item c
|
@item c
|
||||||
Complex builtin type; see @ref{Builtin Type Descriptors}.
|
Complex builtin type; see @ref{Builtin type descriptors}.
|
||||||
|
|
||||||
@item C
|
@item C
|
||||||
COBOL Picture type. See AIX documentation for details.
|
COBOL Picture type. See AIX documentation for details.
|
||||||
|
|
||||||
@item d
|
@item d
|
||||||
File type; see @ref{Miscellaneous Types}.
|
File type; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item D
|
@item D
|
||||||
N-dimensional dynamic array; see @ref{Arrays}.
|
N-dimensional dynamic array; see @ref{Arrays}.
|
||||||
@ -3112,13 +3112,13 @@ Enumeration type; see @ref{Enumerations}.
|
|||||||
N-dimensional subarray; see @ref{Arrays}.
|
N-dimensional subarray; see @ref{Arrays}.
|
||||||
|
|
||||||
@item f
|
@item f
|
||||||
Function type; see @ref{Function Types}.
|
Function type; see @ref{Function types}.
|
||||||
|
|
||||||
@item F
|
@item F
|
||||||
Pascal function parameter; see @ref{Function Types}
|
Pascal function parameter; see @ref{Function types}
|
||||||
|
|
||||||
@item g
|
@item g
|
||||||
Builtin floating point type; see @ref{Builtin Type Descriptors}.
|
Builtin floating point type; see @ref{Builtin type descriptors}.
|
||||||
|
|
||||||
@item G
|
@item G
|
||||||
COBOL Group. See AIX documentation for details.
|
COBOL Group. See AIX documentation for details.
|
||||||
@ -3127,13 +3127,13 @@ COBOL Group. See AIX documentation for details.
|
|||||||
Imported type; see @ref{Cross-references}.
|
Imported type; see @ref{Cross-references}.
|
||||||
|
|
||||||
@item k
|
@item k
|
||||||
Const-qualified type; see @ref{Miscellaneous Types}.
|
Const-qualified type; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item K
|
@item K
|
||||||
COBOL File Descriptor. See AIX documentation for details.
|
COBOL File Descriptor. See AIX documentation for details.
|
||||||
|
|
||||||
@item M
|
@item M
|
||||||
Multiple instance type; see @ref{Miscellaneous Types}.
|
Multiple instance type; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item n
|
@item n
|
||||||
String type; see @ref{Strings}.
|
String type; see @ref{Strings}.
|
||||||
@ -3145,7 +3145,7 @@ Stringptr; see @ref{Strings}.
|
|||||||
Opaque type; see @ref{Typedefs}.
|
Opaque type; see @ref{Typedefs}.
|
||||||
|
|
||||||
@item p
|
@item p
|
||||||
Procedure; see @ref{Function Types}.
|
Procedure; see @ref{Function types}.
|
||||||
|
|
||||||
@item P
|
@item P
|
||||||
Packed array; see @ref{Arrays}.
|
Packed array; see @ref{Arrays}.
|
||||||
@ -3154,8 +3154,8 @@ Packed array; see @ref{Arrays}.
|
|||||||
Range type; see @ref{Subranges}.
|
Range type; see @ref{Subranges}.
|
||||||
|
|
||||||
@item R
|
@item R
|
||||||
Builtin floating type; see @ref{Builtin Type Descriptors} (Sun). Pascal
|
Builtin floating type; see @ref{Builtin type descriptors} (Sun). Pascal
|
||||||
subroutine parameter; see @ref{Function Types} (AIX). Detecting this
|
subroutine parameter; see @ref{Function types} (AIX). Detecting this
|
||||||
conflict is possible with careful parsing (hint: a Pascal subroutine
|
conflict is possible with careful parsing (hint: a Pascal subroutine
|
||||||
parameter type will always contain a comma, and a builtin type
|
parameter type will always contain a comma, and a builtin type
|
||||||
descriptor never will).
|
descriptor never will).
|
||||||
@ -3164,7 +3164,7 @@ descriptor never will).
|
|||||||
Structure type; see @ref{Structures}.
|
Structure type; see @ref{Structures}.
|
||||||
|
|
||||||
@item S
|
@item S
|
||||||
Set type; see @ref{Miscellaneous Types}.
|
Set type; see @ref{Miscellaneous types}.
|
||||||
|
|
||||||
@item u
|
@item u
|
||||||
Union; see @ref{Unions}.
|
Union; see @ref{Unions}.
|
||||||
@ -3174,7 +3174,7 @@ Variant record. This is a Pascal and Modula-2 feature which is like a
|
|||||||
union within a struct in C. See AIX documentation for details.
|
union within a struct in C. See AIX documentation for details.
|
||||||
|
|
||||||
@item w
|
@item w
|
||||||
Wide character; see @ref{Builtin Type Descriptors}.
|
Wide character; see @ref{Builtin type descriptors}.
|
||||||
|
|
||||||
@item x
|
@item x
|
||||||
Cross-reference; see @ref{Cross-references}.
|
Cross-reference; see @ref{Cross-references}.
|
||||||
@ -3189,7 +3189,7 @@ gstring; see @ref{Strings}.
|
|||||||
@c FIXME: This appendix should go away; see N_PSYM or N_SO for an example.
|
@c FIXME: This appendix should go away; see N_PSYM or N_SO for an example.
|
||||||
|
|
||||||
For a full list of stab types, and cross-references to where they are
|
For a full list of stab types, and cross-references to where they are
|
||||||
described, see @ref{Stab Types}. This appendix just duplicates certain
|
described, see @ref{Stab types}. This appendix just duplicates certain
|
||||||
information from the main body of this document; eventually the
|
information from the main body of this document; eventually the
|
||||||
information will all be in one place.
|
information will all be in one place.
|
||||||
|
|
||||||
@ -3486,7 +3486,7 @@ knows that external symbols have leading underbars).
|
|||||||
@c dbx?
|
@c dbx?
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node XCOFF-differences
|
@node XCOFF differences
|
||||||
@appendix Differences between GNU stabs in a.out and GNU stabs in XCOFF
|
@appendix Differences between GNU stabs in a.out and GNU stabs in XCOFF
|
||||||
|
|
||||||
@c FIXME: Merge *all* these into the main body of the document.
|
@c FIXME: Merge *all* these into the main body of the document.
|
||||||
@ -3562,7 +3562,7 @@ N_ECOML C_ECOML
|
|||||||
N_LENG unknown
|
N_LENG unknown
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Sun-differences
|
@node Sun differences
|
||||||
@appendix Differences between GNU stabs and Sun native stabs
|
@appendix Differences between GNU stabs and Sun native stabs
|
||||||
|
|
||||||
@c FIXME: Merge all this stuff into the main body of the document.
|
@c FIXME: Merge all this stuff into the main body of the document.
|
||||||
@ -3580,7 +3580,7 @@ incremented for each new type defined in the compilation. GNU C stabs
|
|||||||
use the type number alone, with no source file number.
|
use the type number alone, with no source file number.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Stabs-in-ELF
|
@node Stabs in ELF
|
||||||
@appendix Using stabs with the ELF object file format
|
@appendix Using stabs with the ELF object file format
|
||||||
|
|
||||||
The ELF object file format allows tools to create object files with
|
The ELF object file format allows tools to create object files with
|
||||||
|
Reference in New Issue
Block a user