Line 1... |
Line 1... |
This is stabs.info, produced by Makeinfo version 3.12f from
|
This is stabs.info, produced by makeinfo version 4.0 from
|
./stabs.texinfo.
|
./stabs.texinfo.
|
|
|
START-INFO-DIR-ENTRY
|
START-INFO-DIR-ENTRY
|
* Stabs: (stabs). The "stabs" debugging information format.
|
* Stabs: (stabs). The "stabs" debugging information format.
|
END-INFO-DIR-ENTRY
|
END-INFO-DIR-ENTRY
|
Line 135... |
Line 135... |
type information for the type of the field being pointed to. (FIXME:
|
type information for the type of the field being pointed to. (FIXME:
|
this is acknowledged to be gibberish. Can anyone say what really goes
|
this is acknowledged to be gibberish. Can anyone say what really goes
|
here?).
|
here?).
|
|
|
Note that there is a conflict between this and type attributes
|
Note that there is a conflict between this and type attributes
|
(*note String Field::.); both use type descriptor `@'. Fortunately,
|
(*note String Field::); both use type descriptor `@'. Fortunately, the
|
the `@' type descriptor used in this C++ sense always will be followed
|
`@' type descriptor used in this C++ sense always will be followed by a
|
by a digit, `(', or `-', and type attributes never start with those
|
digit, `(', or `-', and type attributes never start with those things.
|
things.
|
|
|
|
|
|
File: stabs.info, Node: Protections, Next: Method Modifiers, Prev: Member Type Descriptor, Up: Cplusplus
|
File: stabs.info, Node: Protections, Next: Method Modifiers, Prev: Member Type Descriptor, Up: Cplusplus
|
|
|
Protections
|
Protections
|
Line 496... |
Line 495... |
Table of Stab Types
|
Table of Stab Types
|
*******************
|
*******************
|
|
|
The following are all the possible values for the stab type field,
|
The following are all the possible values for the stab type field,
|
for a.out files, in numeric order. This does not apply to XCOFF, but
|
for a.out files, in numeric order. This does not apply to XCOFF, but
|
it does apply to stabs in sections (*note Stab Sections::.). Stabs in
|
it does apply to stabs in sections (*note Stab Sections::). Stabs in
|
ECOFF use these values but add 0x8f300 to distinguish them from non-stab
|
ECOFF use these values but add 0x8f300 to distinguish them from non-stab
|
symbols.
|
symbols.
|
|
|
The symbolic names are defined in the file `include/aout/stabs.def'.
|
The symbolic names are defined in the file `include/aout/stabs.def'.
|
|
|
Line 597... |
Line 596... |
|
|
`0x22 N_FNAME'
|
`0x22 N_FNAME'
|
Function name (for BSD Fortran); see *Note Procedures::.
|
Function name (for BSD Fortran); see *Note Procedures::.
|
|
|
`0x24 N_FUN'
|
`0x24 N_FUN'
|
Function name (*note Procedures::.) or text segment variable
|
Function name (*note Procedures::) or text segment variable (*note
|
(*note Statics::.).
|
Statics::).
|
|
|
`0x26 N_STSYM'
|
`0x26 N_STSYM'
|
Data segment file-scope variable; see *Note Statics::.
|
Data segment file-scope variable; see *Note Statics::.
|
|
|
`0x28 N_LCSYM'
|
`0x28 N_LCSYM'
|
Line 671... |
Line 670... |
|
|
`0x64 N_SO'
|
`0x64 N_SO'
|
Path and name of source file; see *Note Source Files::.
|
Path and name of source file; see *Note Source Files::.
|
|
|
`0x80 N_LSYM'
|
`0x80 N_LSYM'
|
Stack variable (*note Stack Variables::.) or type (*note
|
Stack variable (*note Stack Variables::) or type (*note
|
Typedefs::.).
|
Typedefs::).
|
|
|
`0x82 N_BINCL'
|
`0x82 N_BINCL'
|
Beginning of an include file (Sun only); see *Note Include Files::.
|
Beginning of an include file (Sun only); see *Note Include Files::.
|
|
|
`0x84 N_SOL'
|
`0x84 N_SOL'
|
Line 1272... |
Line 1271... |
order of the stabs binary data depends on the object file format. For
|
order of the stabs binary data depends on the object file format. For
|
ELF, it matches the byte order of the ELF file itself, as determined
|
ELF, it matches the byte order of the ELF file itself, as determined
|
from the `EI_DATA' field in the `e_ident' member of the ELF header.
|
from the `EI_DATA' field in the `e_ident' member of the ELF header.
|
For SOM, it is always big-endian (is this true??? FIXME). For COFF, it
|
For SOM, it is always big-endian (is this true??? FIXME). For COFF, it
|
matches the byte order of the COFF headers. The meaning of the fields
|
matches the byte order of the COFF headers. The meaning of the fields
|
is the same as for a.out (*note Symbol Table Format::.), except that
|
is the same as for a.out (*note Symbol Table Format::), except that the
|
the `n_strx' field is relative to the strings for the current
|
`n_strx' field is relative to the strings for the current compilation
|
compilation unit (which can be found using the synthetic N_UNDF stab
|
unit (which can be found using the synthetic N_UNDF stab described
|
described below), rather than the entire string table.
|
below), rather than the entire string table.
|
|
|
The first stab in the `.stab' section for each compilation unit is
|
The first stab in the `.stab' section for each compilation unit is
|
synthetic, generated entirely by the assembler, with no corresponding
|
synthetic, generated entirely by the assembler, with no corresponding
|
`.stab' directive as input to the assembler. This stab contains the
|
`.stab' directive as input to the assembler. This stab contains the
|
following fields:
|
following fields:
|
Line 1324... |
Line 1323... |
before concatenating, then the offsets to strings in the middle of the
|
before concatenating, then the offsets to strings in the middle of the
|
executable's `.stabstr' section would be wrong.
|
executable's `.stabstr' section would be wrong.
|
|
|
The GNU linker is able to optimize stabs information by merging
|
The GNU linker is able to optimize stabs information by merging
|
duplicate strings and removing duplicate header file information (*note
|
duplicate strings and removing duplicate header file information (*note
|
Include Files::.). When some versions of the GNU linker optimize stabs
|
Include Files::). When some versions of the GNU linker optimize stabs
|
in sections, they remove the leading `N_UNDF' symbol and arranges for
|
in sections, they remove the leading `N_UNDF' symbol and arranges for
|
all the `n_strx' fields to be relative to the start of the `.stabstr'
|
all the `n_strx' fields to be relative to the start of the `.stabstr'
|
section.
|
section.
|
|
|
|
|
Line 1363... |
Line 1362... |
to kludge their linker to not do this (to speed up linking), even
|
to kludge their linker to not do this (to speed up linking), even
|
though the correct way to avoid having the linker do these relocations
|
though the correct way to avoid having the linker do these relocations
|
is to have the compiler no longer output relocatable values. Last I
|
is to have the compiler no longer output relocatable values. Last I
|
heard they had been talked out of the linker kludge. See Sun point
|
heard they had been talked out of the linker kludge. See Sun point
|
patch 101052-01 and Sun bug 1142109. With the Sun compiler this
|
patch 101052-01 and Sun bug 1142109. With the Sun compiler this
|
affects `S' symbol descriptor stabs (*note Statics::.) and functions
|
affects `S' symbol descriptor stabs (*note Statics::) and functions
|
(*note Procedures::.). In the latter case, to adopt the clean solution
|
(*note Procedures::). In the latter case, to adopt the clean solution
|
(making the value of the stab relative to the start of the compilation
|
(making the value of the stab relative to the start of the compilation
|
unit), it would be necessary to invent a `Ttext.text' symbol, analogous
|
unit), it would be necessary to invent a `Ttext.text' symbol, analogous
|
to the `Bbss.bss', etc., symbols. I recommend this rather than using a
|
to the `Bbss.bss', etc., symbols. I recommend this rather than using a
|
zero value and getting the address from the ELF symbols.
|
zero value and getting the address from the ELF symbols.
|
|
|