mirror of
https://github.com/rtlduino/RTL8710AF_GCC.git
synced 2026-07-15 07:45:41 +00:00
motify compile link error
motify compile link error
This commit is contained in:
parent
923914edae
commit
03e74a8e50
5418 changed files with 1367914 additions and 206149 deletions
|
|
@ -0,0 +1,57 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Alternate Entry Points - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Block-Structure.html#Block-Structure" title="Block Structure">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Alternate-Entry-Points"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Block-Structure.html#Block-Structure">Block Structure</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.8 Alternate Entry Points</h3>
|
||||
|
||||
<p><a name="index-N_005fENTRY-23"></a><a name="index-C_005fENTRY-24"></a>Some languages, like Fortran, have the ability to enter procedures at
|
||||
some place other than the beginning. One can declare an alternate entry
|
||||
point. The <code>N_ENTRY</code> stab is for this; however, the Sun FORTRAN
|
||||
compiler doesn't use it. According to AIX documentation, only the name
|
||||
of a <code>C_ENTRY</code> stab is significant; the address of the alternate
|
||||
entry point comes from the corresponding external symbol. A previous
|
||||
revision of this document said that the value of an <code>N_ENTRY</code> stab
|
||||
was the address of the alternate entry point, but I don't know the
|
||||
source for that information.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Arrays - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Subranges.html#Subranges" title="Subranges">
|
||||
<link rel="next" href="Strings.html#Strings" title="Strings">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Arrays"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Strings.html#Strings">Strings</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Subranges.html#Subranges">Subranges</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.5 Array Types</h3>
|
||||
|
||||
<p>Arrays use the ‘<samp><span class="samp">a</span></samp>’ type descriptor. Following the type descriptor
|
||||
is the type of the index and the type of the array elements. If the
|
||||
index type is a range type, it ends in a semicolon; otherwise
|
||||
(for example, if it is a type reference), there does not
|
||||
appear to be any way to tell where the types are separated. In an
|
||||
effort to clean up this mess, IBM documents the two types as being
|
||||
separated by a semicolon, and a range type as not ending in a semicolon
|
||||
(but this is not right for range types which are not array indexes,
|
||||
see <a href="Subranges.html#Subranges">Subranges</a>). I think probably the best solution is to specify
|
||||
that a semicolon ends a range type, and that the index type and element
|
||||
type of an array are separated by a semicolon, but that if the index
|
||||
type is a range type, the extra semicolon can be omitted. GDB (at least
|
||||
through version 4.9) doesn't support any kind of index type other than a
|
||||
range anyway; I'm not sure about dbx.
|
||||
|
||||
<p>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
|
||||
type information (see <a href="String-Field.html#String-Field">String Field</a>) (that is, it need not start with
|
||||
‘<samp><var>type-number</var><span class="samp">=</span></samp>’ 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
|
||||
gives ‘<samp><span class="samp">ar1;1;10;ar1;1;10;4</span></samp>’ as a legitimate way to express a two
|
||||
dimensional array. According to AIX documentation, the element type
|
||||
must be type information. GDB accepts either.
|
||||
|
||||
<p>The type of the index is often a range type, expressed as the type
|
||||
descriptor ‘<samp><span class="samp">r</span></samp>’ and some parameters. It defines the size of the
|
||||
array. In the example below, the range ‘<samp><span class="samp">r1;0;2;</span></samp>’ defines an index
|
||||
type which is a subrange of type 1 (integer), with a lower bound of 0
|
||||
and an upper bound of 2. This defines the valid range of subscripts of
|
||||
a three-element C array.
|
||||
|
||||
<p>For example, the definition:
|
||||
|
||||
<pre class="example"> char char_vec[3] = {'a','b','c'};
|
||||
</pre>
|
||||
<p class="noindent">produces the output:
|
||||
|
||||
<pre class="example"> .stabs "char_vec:G19=ar1;0;2;2",32,0,0,0
|
||||
.global _char_vec
|
||||
.align 4
|
||||
_char_vec:
|
||||
.byte 97
|
||||
.byte 98
|
||||
.byte 99
|
||||
</pre>
|
||||
<p>If an array is <dfn>packed</dfn>, the elements are spaced more
|
||||
closely than normal, saving memory at the expense of speed. For
|
||||
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.
|
||||
One way to specify that something is packed is with type attributes
|
||||
(see <a href="String-Field.html#String-Field">String Field</a>). In the case of arrays, another is to use the
|
||||
‘<samp><span class="samp">P</span></samp>’ type descriptor instead of ‘<samp><span class="samp">a</span></samp>’. Other than specifying a
|
||||
packed array, ‘<samp><span class="samp">P</span></samp>’ is identical to ‘<samp><span class="samp">a</span></samp>’.
|
||||
|
||||
<!-- FIXME-what is it? A pointer? -->
|
||||
<p>An open array is represented by the ‘<samp><span class="samp">A</span></samp>’ type descriptor followed by
|
||||
type information specifying the type of the array elements.
|
||||
|
||||
<!-- FIXME: what is the format of this type? A pointer to a vector of pointers? -->
|
||||
<p>An N-dimensional dynamic array is represented by
|
||||
|
||||
<pre class="example"> D <var>dimensions</var> ; <var>type-information</var>
|
||||
</pre>
|
||||
<!-- Does dimensions really have this meaning? The AIX documentation -->
|
||||
<!-- doesn't say. -->
|
||||
<p><var>dimensions</var> is the number of dimensions; <var>type-information</var>
|
||||
specifies the type of the array elements.
|
||||
|
||||
<!-- FIXME: what is the format of this type? A pointer to some offsets in -->
|
||||
<!-- another array? -->
|
||||
<p>A subarray of an N-dimensional array is represented by
|
||||
|
||||
<pre class="example"> E <var>dimensions</var> ; <var>type-information</var>
|
||||
</pre>
|
||||
<!-- Does dimensions really have this meaning? The AIX documentation -->
|
||||
<!-- doesn't say. -->
|
||||
<p><var>dimensions</var> is the number of dimensions; <var>type-information</var>
|
||||
specifies the type of the array elements.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Assembly Code - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="prev" href="C-Example.html#C-Example" title="C Example">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Assembly-Code"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="C-Example.html#C-Example">C Example</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Overview.html#Overview">Overview</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">1.5 The Simple Example at the Assembly Level</h3>
|
||||
|
||||
<p>This simple “hello world” example demonstrates several of the stab
|
||||
types used to describe C language source files.
|
||||
|
||||
<pre class="example"> 1 gcc2_compiled.:
|
||||
2 .stabs "/cygint/s1/users/jcm/play/",100,0,0,Ltext0
|
||||
3 .stabs "hello.c",100,0,0,Ltext0
|
||||
4 .text
|
||||
5 Ltext0:
|
||||
6 .stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0
|
||||
7 .stabs "char:t2=r2;0;127;",128,0,0,0
|
||||
8 .stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0
|
||||
9 .stabs "unsigned int:t4=r1;0;-1;",128,0,0,0
|
||||
10 .stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0
|
||||
11 .stabs "short int:t6=r1;-32768;32767;",128,0,0,0
|
||||
12 .stabs "long long int:t7=r1;0;-1;",128,0,0,0
|
||||
13 .stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0
|
||||
14 .stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0
|
||||
15 .stabs "signed char:t10=r1;-128;127;",128,0,0,0
|
||||
16 .stabs "unsigned char:t11=r1;0;255;",128,0,0,0
|
||||
17 .stabs "float:t12=r1;4;0;",128,0,0,0
|
||||
18 .stabs "double:t13=r1;8;0;",128,0,0,0
|
||||
19 .stabs "long double:t14=r1;8;0;",128,0,0,0
|
||||
20 .stabs "void:t15=15",128,0,0,0
|
||||
21 .align 4
|
||||
22 LC0:
|
||||
23 .ascii "Hello, world!\12\0"
|
||||
24 .align 4
|
||||
25 .global _main
|
||||
26 .proc 1
|
||||
27 _main:
|
||||
28 .stabn 68,0,4,LM1
|
||||
29 LM1:
|
||||
30 !#PROLOGUE# 0
|
||||
31 save %sp,-136,%sp
|
||||
32 !#PROLOGUE# 1
|
||||
33 call ___main,0
|
||||
34 nop
|
||||
35 .stabn 68,0,5,LM2
|
||||
36 LM2:
|
||||
37 LBB2:
|
||||
38 sethi %hi(LC0),%o1
|
||||
39 or %o1,%lo(LC0),%o0
|
||||
40 call _printf,0
|
||||
41 nop
|
||||
42 .stabn 68,0,6,LM3
|
||||
43 LM3:
|
||||
44 LBE2:
|
||||
45 .stabn 68,0,6,LM4
|
||||
46 LM4:
|
||||
47 L1:
|
||||
48 ret
|
||||
49 restore
|
||||
50 .stabs "main:F1",36,0,0,_main
|
||||
51 .stabn 192,0,0,LBB2
|
||||
52 .stabn 224,0,0,LBE2
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Based Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Statics.html#Statics" title="Statics">
|
||||
<link rel="next" href="Parameters.html#Parameters" title="Parameters">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Based-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Parameters.html#Parameters">Parameters</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Statics.html#Statics">Statics</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.6 Fortran Based Variables</h3>
|
||||
|
||||
<p>Fortran (at least, the Sun and SGI dialects of FORTRAN-77) has a feature
|
||||
which allows allocating arrays with <code>malloc</code>, but which avoids
|
||||
blurring the line between arrays and pointers the way that C does. In
|
||||
stabs such a variable uses the ‘<samp><span class="samp">b</span></samp>’ symbol descriptor.
|
||||
|
||||
<p>For example, the Fortran declarations
|
||||
|
||||
<pre class="example"> real foo, foo10(10), foo10_5(10,5)
|
||||
pointer (foop, foo)
|
||||
pointer (foo10p, foo10)
|
||||
pointer (foo105p, foo10_5)
|
||||
</pre>
|
||||
<p>produce the stabs
|
||||
|
||||
<pre class="example"> foo:b6
|
||||
foo10:bar3;1;10;6
|
||||
foo10_5:bar3;1;5;ar3;1;10;6
|
||||
</pre>
|
||||
<p>In this example, <code>real</code> is type 6 and type 3 is an integral type
|
||||
which is the type of the subscripts of the array (probably
|
||||
<code>integer</code>).
|
||||
|
||||
<p>The ‘<samp><span class="samp">b</span></samp>’ symbol descriptor is like ‘<samp><span class="samp">V</span></samp>’ in that it denotes a
|
||||
statically allocated symbol whose scope is local to a function; see
|
||||
See <a href="Statics.html#Statics">Statics</a>. The value of the symbol, instead of being the address
|
||||
of the variable itself, is the address of a pointer to that variable.
|
||||
So in the above example, the value of the <code>foo</code> stab is the address
|
||||
of a pointer to a real, the value of the <code>foo10</code> stab is the
|
||||
address of a pointer to a 10-element array of reals, and the value of
|
||||
the <code>foo10_5</code> stab is the address of a pointer to a 5-element array
|
||||
of 10-element arrays of reals.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Basic Cplusplus Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Nested-Symbols.html#Nested-Symbols" title="Nested Symbols">
|
||||
<link rel="next" href="Simple-Classes.html#Simple-Classes" title="Simple Classes">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Basic-Cplusplus-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Simple-Classes.html#Simple-Classes">Simple Classes</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.3 Basic Types For C<tt>++</tt></h3>
|
||||
|
||||
<p><< the examples that follow are based on a01.C >>
|
||||
|
||||
<p>C<tt>++</tt> 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
|
||||
16, is defined in terms of itself like the void type.
|
||||
|
||||
<p>The vtable record type, type 17, is defined as a structure type and
|
||||
then as a structure tag. The structure has four fields: delta, index,
|
||||
pfn, and delta2. pfn is the function pointer.
|
||||
|
||||
<p><< In boilerplate $vtbl_ptr_type, what are the fields delta,
|
||||
index, and delta2 used for? >>
|
||||
|
||||
<p>This basic type is present in all C<tt>++</tt> programs even if there are no
|
||||
virtual methods defined.
|
||||
|
||||
<pre class="display"> .stabs "struct_name:sym_desc(type)type_def(17)=type_desc(struct)struct_bytes(8)
|
||||
elem_name(delta):type_ref(short int),bit_offset(0),field_bits(16);
|
||||
elem_name(index):type_ref(short int),bit_offset(16),field_bits(16);
|
||||
elem_name(pfn):type_def(18)=type_desc(ptr to)type_ref(void),
|
||||
bit_offset(32),field_bits(32);
|
||||
elem_name(delta2):type_def(short int);bit_offset(32),field_bits(16);;"
|
||||
N_LSYM, NIL, NIL
|
||||
</pre>
|
||||
<pre class="smallexample"> .stabs "$vtbl_ptr_type:t17=s8
|
||||
delta:6,0,16;index:6,16,16;pfn:18=*15,32,32;delta2:6,32,16;;"
|
||||
,128,0,0,0
|
||||
</pre>
|
||||
<pre class="display"> .stabs "name:sym_dec(struct tag)type_ref($vtbl_ptr_type)",N_LSYM,NIL,NIL,NIL
|
||||
</pre>
|
||||
<pre class="example"> .stabs "$vtbl_ptr_type:T17",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Block Structure - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Nested-Procedures.html#Nested-Procedures" title="Nested Procedures">
|
||||
<link rel="next" href="Alternate-Entry-Points.html#Alternate-Entry-Points" title="Alternate Entry Points">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Block-Structure"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.7 Block Structure</h3>
|
||||
|
||||
<p><a name="index-N_005fLBRAC-18"></a><a name="index-N_005fRBRAC-19"></a><!-- For GCC 2.5.8 or so stabs-in-coff, these are absolute instead of -->
|
||||
<!-- function relative (as documented below). But GDB has never been able -->
|
||||
<!-- to deal with that (it had wanted them to be relative to the file, but -->
|
||||
<!-- I just fixed that (between GDB 4.12 and 4.13)), so it is function -->
|
||||
<!-- relative just like ELF and SOM and the below documentation. -->
|
||||
The program's block structure is represented by the <code>N_LBRAC</code> (left
|
||||
brace) and the <code>N_RBRAC</code> (right brace) stab types. The variables
|
||||
defined inside a block precede the <code>N_LBRAC</code> symbol for most
|
||||
compilers, including GCC. Other compilers, such as the Convex, Acorn
|
||||
RISC machine, and Sun <code>acc</code> compilers, put the variables after the
|
||||
<code>N_LBRAC</code> symbol. The values of the <code>N_LBRAC</code> and
|
||||
<code>N_RBRAC</code> symbols are the start and end addresses of the code of
|
||||
the block, respectively. For most machines, they are relative to the
|
||||
starting address of this source file. For the Gould NP1, they are
|
||||
absolute. For stabs in sections (see <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>), they are
|
||||
relative to the function in which they occur.
|
||||
|
||||
<p>The <code>N_LBRAC</code> and <code>N_RBRAC</code> stabs that describe the block
|
||||
scope of a procedure are located after the <code>N_FUN</code> stab that
|
||||
represents the procedure itself.
|
||||
|
||||
<p>Sun documents the desc field of <code>N_LBRAC</code> and
|
||||
<code>N_RBRAC</code> symbols as containing the nesting level of the block.
|
||||
However, dbx seems to not care, and GCC always sets desc to
|
||||
zero.
|
||||
|
||||
<p><a name="index-g_t_002ebb-20"></a><a name="index-g_t_002ebe-21"></a><a name="index-C_005fBLOCK-22"></a>For XCOFF, block scope is indicated with <code>C_BLOCK</code> symbols. If the
|
||||
name of the symbol is ‘<samp><span class="samp">.bb</span></samp>’, then it is the beginning of the block;
|
||||
if the name of the symbol is ‘<samp><span class="samp">.be</span></samp>’; it is the end of the block.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Builtin Type Descriptors - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Builtin-Types.html#Builtin-Types" title="Builtin Types">
|
||||
<link rel="prev" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" title="Traditional Builtin Types">
|
||||
<link rel="next" href="Negative-Type-Numbers.html#Negative-Type-Numbers" title="Negative Type Numbers">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Builtin-Type-Descriptors"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Builtin-Types.html#Builtin-Types">Builtin Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">5.1.2 Defining Builtin Types Using Builtin Type Descriptors</h4>
|
||||
|
||||
<p>This is the method used by Sun's <code>acc</code> for defining builtin types.
|
||||
These are the type descriptors to define builtin types:
|
||||
|
||||
<dl>
|
||||
<!-- FIXME: clean up description of width and offset, once we figure out -->
|
||||
<!-- what they mean -->
|
||||
<dt><code>b </code><var>signed</var> <var>char-flag</var> <var>width</var><code> ; </code><var>offset</var><code> ; </code><var>nbits</var><code> ;</code><dd>Define an integral type. <var>signed</var> is ‘<samp><span class="samp">u</span></samp>’ for unsigned or
|
||||
‘<samp><span class="samp">s</span></samp>’ for signed. <var>char-flag</var> is ‘<samp><span class="samp">c</span></samp>’ which indicates this
|
||||
is a character type, or is omitted. I assume this is to distinguish an
|
||||
integral type from a character type of the same size, for example it
|
||||
might make sense to set it for the C type <code>wchar_t</code> so the debugger
|
||||
can print such variables differently (Solaris does not do this). Sun
|
||||
sets it on the C types <code>signed char</code> and <code>unsigned char</code> which
|
||||
arguably is wrong. <var>width</var> and <var>offset</var> appear to be for small
|
||||
objects stored in larger ones, for example a <code>short</code> in an
|
||||
<code>int</code> register. <var>width</var> is normally the number of bytes in the
|
||||
type. <var>offset</var> seems to always be zero. <var>nbits</var> is the number
|
||||
of bits in the type.
|
||||
|
||||
<p>Note that type descriptor ‘<samp><span class="samp">b</span></samp>’ used for builtin types conflicts with
|
||||
its use for Pascal space types (see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>); they can
|
||||
be distinguished because the character following the type descriptor
|
||||
will be a digit, ‘<samp><span class="samp">(</span></samp>’, or ‘<samp><span class="samp">-</span></samp>’ for a Pascal space type, or
|
||||
‘<samp><span class="samp">u</span></samp>’ or ‘<samp><span class="samp">s</span></samp>’ for a builtin type.
|
||||
|
||||
<br><dt><code>w</code><dd>Documented by AIX to define a wide character type, but their compiler
|
||||
actually uses negative type numbers (see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>).
|
||||
|
||||
<br><dt><code>R </code><var>fp-type</var><code> ; </code><var>bytes</var><code> ;</code><dd>Define a floating point type. <var>fp-type</var> has one of the following values:
|
||||
|
||||
<dl>
|
||||
<dt><code>1 (NF_SINGLE)</code><dd>IEEE 32-bit (single precision) floating point format.
|
||||
|
||||
<br><dt><code>2 (NF_DOUBLE)</code><dd>IEEE 64-bit (double precision) floating point format.
|
||||
|
||||
<br><dt><code>3 (NF_COMPLEX)</code><br><dt><code>4 (NF_COMPLEX16)</code><br><dt><code>5 (NF_COMPLEX32)</code><dd><!-- "GDB source" really means @file{include/aout/stab_gnu.h}, but trying -->
|
||||
<!-- to put that here got an overfull hbox. -->
|
||||
These are for complex numbers. A comment in the GDB source describes
|
||||
them as Fortran <code>complex</code>, <code>double complex</code>, and
|
||||
<code>complex*16</code>, respectively, but what does that mean? (i.e., Single
|
||||
precision? Double precision?).
|
||||
|
||||
<br><dt><code>6 (NF_LDOUBLE)</code><dd>Long double. This should probably only be used for Sun format
|
||||
<code>long double</code>, and new codes should be used for other floating
|
||||
point formats (<code>NF_DOUBLE</code> can be used if a <code>long double</code> is
|
||||
really just an IEEE double, of course).
|
||||
</dl>
|
||||
|
||||
<p><var>bytes</var> is the number of bytes occupied by the type. This allows a
|
||||
debugger to perform some operations with the type even if it doesn't
|
||||
understand <var>fp-type</var>.
|
||||
|
||||
<br><dt><code>g </code><var>type-information</var><code> ; </code><var>nbits</var><dd>Documented by AIX to define a floating type, but their compiler actually
|
||||
uses negative type numbers (see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>).
|
||||
|
||||
<br><dt><code>c </code><var>type-information</var><code> ; </code><var>nbits</var><dd>Documented by AIX to define a complex type, but their compiler actually
|
||||
uses negative type numbers (see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>).
|
||||
</dl>
|
||||
|
||||
<p>The C <code>void</code> type is defined as a signed integral type 0 bits long:
|
||||
<pre class="example"> .stabs "void:t19=bs0;0;0",128,0,0,0
|
||||
</pre>
|
||||
<p>The Solaris compiler seems to omit the trailing semicolon in this case.
|
||||
Getting sloppy in this way is not a swift move because if a type is
|
||||
embedded in a more complex expression it is necessary to be able to tell
|
||||
where it ends.
|
||||
|
||||
<p>I'm not sure how a boolean type is represented.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Builtin Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="next" href="Miscellaneous-Types.html#Miscellaneous-Types" title="Miscellaneous Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Builtin-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.1 Builtin Types</h3>
|
||||
|
||||
<p>Certain types are built in (<code>int</code>, <code>short</code>, <code>void</code>,
|
||||
<code>float</code>, etc.); the debugger recognizes these types and knows how
|
||||
to handle them. Thus, don't be surprised if some of the following ways
|
||||
of specifying builtin types do not specify everything that a debugger
|
||||
would need to know about the type—in some cases they merely specify
|
||||
enough information to distinguish the type from other types.
|
||||
|
||||
<p>The traditional way to define builtin types is convoluted, so new ways
|
||||
have been invented to describe them. Sun's <code>acc</code> uses special
|
||||
builtin type descriptors (‘<samp><span class="samp">b</span></samp>’ and ‘<samp><span class="samp">R</span></samp>’), and IBM uses negative
|
||||
type numbers. GDB accepts all three ways, as of version 4.8; dbx just
|
||||
accepts the traditional builtin types and perhaps one of the other two
|
||||
formats. The following sections describe each of these formats.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>: Put on your seat belts and prepare for kludgery
|
||||
<li><a accesskey="2" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>: Builtin types with special type descriptors
|
||||
<li><a accesskey="3" href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>: Builtin types using negative type numbers
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>C Example - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="prev" href="String-Field.html#String-Field" title="String Field">
|
||||
<link rel="next" href="Assembly-Code.html#Assembly-Code" title="Assembly Code">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="C-Example"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Assembly-Code.html#Assembly-Code">Assembly Code</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="String-Field.html#String-Field">String Field</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Overview.html#Overview">Overview</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">1.4 A Simple Example in C Source</h3>
|
||||
|
||||
<p>To get the flavor of how stabs describe source information for a C
|
||||
program, let's look at the simple program:
|
||||
|
||||
<pre class="example"> main()
|
||||
{
|
||||
printf("Hello world");
|
||||
}
|
||||
</pre>
|
||||
<p>When compiled with ‘<samp><span class="samp">-g</span></samp>’, the program above yields the following
|
||||
<samp><span class="file">.s</span></samp> file. Line numbers have been added to make it easier to refer
|
||||
to parts of the <samp><span class="file">.s</span></samp> file in the description of the stabs that
|
||||
follows.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Class Instance - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Simple-Classes.html#Simple-Classes" title="Simple Classes">
|
||||
<link rel="next" href="Methods.html#Methods" title="Methods">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Class-Instance"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Methods.html#Methods">Methods</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Simple-Classes.html#Simple-Classes">Simple Classes</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.5 Class Instance</h3>
|
||||
|
||||
<p>As shown above, describing even a simple C<tt>++</tt> class definition is
|
||||
accomplished by massively extending the stab format used in C to
|
||||
describe structure types. However, once the class is defined, C stabs
|
||||
with no modifications can be used to describe class instances. The
|
||||
following source:
|
||||
|
||||
<pre class="example"> main () {
|
||||
baseA AbaseA;
|
||||
}
|
||||
</pre>
|
||||
<p class="noindent">yields the following stab describing the class instance. It looks no
|
||||
different from a standard C stab describing a local variable.
|
||||
|
||||
<pre class="display"> .stabs "name:type_ref(baseA)", N_LSYM, NIL, NIL, frame_ptr_offset
|
||||
</pre>
|
||||
<pre class="example"> .stabs "AbaseA:20",128,0,0,-20
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Class Names - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="next" href="Nested-Symbols.html#Nested-Symbols" title="Nested Symbols">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Class-Names"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.1 C<tt>++</tt> Class Names</h3>
|
||||
|
||||
<p>In C<tt>++</tt>, a class name which is declared with <code>class</code>, <code>struct</code>,
|
||||
or <code>union</code>, is not only a tag, as in C, but also a type name. Thus
|
||||
there should be stabs with both ‘<samp><span class="samp">t</span></samp>’ and ‘<samp><span class="samp">T</span></samp>’ symbol descriptors
|
||||
(see <a href="Typedefs.html#Typedefs">Typedefs</a>).
|
||||
|
||||
<p>To save space, there is a special abbreviation for this case. If the
|
||||
‘<samp><span class="samp">T</span></samp>’ symbol descriptor is followed by ‘<samp><span class="samp">t</span></samp>’, then the stab
|
||||
defines both a type name and a tag.
|
||||
|
||||
<p>For example, the C<tt>++</tt> code
|
||||
|
||||
<pre class="example"> struct foo {int x;};
|
||||
</pre>
|
||||
<p>can be represented as either
|
||||
|
||||
<pre class="example"> .stabs "foo:T19=s4x:1,0,32;;",128,0,0,0 # <span class="roman">128 is N_LSYM</span>
|
||||
.stabs "foo:t19",128,0,0,0
|
||||
</pre>
|
||||
<p>or
|
||||
|
||||
<pre class="example"> .stabs "foo:Tt19=s4x:1,0,32;;",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Common Blocks - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Register-Variables.html#Register-Variables" title="Register Variables">
|
||||
<link rel="next" href="Statics.html#Statics" title="Statics">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Common-Blocks"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Statics.html#Statics">Statics</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Register-Variables.html#Register-Variables">Register Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.4 Common Blocks</h3>
|
||||
|
||||
<p>A common block is a statically allocated section of memory which can be
|
||||
referred to by several source files. It may contain several variables.
|
||||
I believe Fortran is the only language with this feature.
|
||||
|
||||
<p><a name="index-N_005fBCOMM-31"></a><a name="index-N_005fECOMM-32"></a><a name="index-C_005fBCOMM-33"></a><a name="index-C_005fECOMM-34"></a>A <code>N_BCOMM</code> stab begins a common block and an <code>N_ECOMM</code> stab
|
||||
ends it. The only field that is significant in these two stabs is the
|
||||
string, which names a normal (non-debugging) symbol that gives the
|
||||
address of the common block. According to IBM documentation, only the
|
||||
<code>N_BCOMM</code> has the name of the common block (even though their
|
||||
compiler actually puts it both places).
|
||||
|
||||
<p><a name="index-N_005fECOML-35"></a><a name="index-C_005fECOML-36"></a>The stabs for the members of the common block are between the
|
||||
<code>N_BCOMM</code> and the <code>N_ECOMM</code>; the value of each stab is the
|
||||
offset within the common block of that variable. IBM uses the
|
||||
<code>C_ECOML</code> stab type, and there is a corresponding <code>N_ECOML</code>
|
||||
stab type, but Sun's Fortran compiler uses <code>N_GSYM</code> instead. The
|
||||
variables within a common block use the ‘<samp><span class="samp">V</span></samp>’ symbol descriptor (I
|
||||
believe this is true of all Fortran variables). Other stabs (at least
|
||||
type declarations using <code>C_DECL</code>) can also be between the
|
||||
<code>N_BCOMM</code> and the <code>N_ECOMM</code>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Conformant Arrays - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Parameters.html#Parameters" title="Parameters">
|
||||
<link rel="prev" href="Reference-Parameters.html#Reference-Parameters" title="Reference Parameters">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Conformant-Arrays"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Parameters.html#Parameters">Parameters</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">4.7.4 Passing Conformant Array Parameters</h4>
|
||||
|
||||
<!-- Is this paragraph correct? It is based on piecing together patchy -->
|
||||
<!-- information and some guesswork -->
|
||||
<p>Conformant arrays are a feature of Modula-2, and perhaps other
|
||||
languages, in which the size of an array parameter is not known to the
|
||||
called function until run-time. Such parameters have two stabs: a
|
||||
‘<samp><span class="samp">x</span></samp>’ for the array itself, and a ‘<samp><span class="samp">C</span></samp>’, which represents the size
|
||||
of the array. The value of the ‘<samp><span class="samp">x</span></samp>’ stab is the offset in the
|
||||
argument list where the address of the array is stored (it this right?
|
||||
it is a guess); the value of the ‘<samp><span class="samp">C</span></samp>’ stab is the offset in the
|
||||
argument list where the size of the array (in elements? in bytes?) is
|
||||
stored.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Constants - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="next" href="Variables.html#Variables" title="Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Constants"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Variables.html#Variables">Variables</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Program-Structure.html#Program-Structure">Program Structure</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">3 Constants</h2>
|
||||
|
||||
<p>The ‘<samp><span class="samp">c</span></samp>’ symbol descriptor indicates that this stab represents a
|
||||
constant. This symbol descriptor is an exception to the general rule
|
||||
that symbol descriptors are followed by type information. Instead, it
|
||||
is followed by ‘<samp><span class="samp">=</span></samp>’ and one of the following:
|
||||
|
||||
<dl>
|
||||
<dt><code>b </code><var>value</var><dd>Boolean constant. <var>value</var> is a numeric value; I assume it is 0 for
|
||||
false or 1 for true.
|
||||
|
||||
<br><dt><code>c </code><var>value</var><dd>Character constant. <var>value</var> is the numeric value of the constant.
|
||||
|
||||
<br><dt><code>e </code><var>type-information</var><code> , </code><var>value</var><dd>Constant whose value can be represented as integral.
|
||||
<var>type-information</var> is the type of the constant, as it would appear
|
||||
after a symbol descriptor (see <a href="String-Field.html#String-Field">String Field</a>). <var>value</var> is the
|
||||
numeric value of the constant. GDB 4.9 does not actually get the right
|
||||
value if <var>value</var> does not fit in a host <code>int</code>, but it does not
|
||||
do anything violent, and future debuggers could be extended to accept
|
||||
integers of any size (whether unsigned or not). This constant type is
|
||||
usually documented as being only for enumeration constants, but GDB has
|
||||
never imposed that restriction; I don't know about other debuggers.
|
||||
|
||||
<br><dt><code>i </code><var>value</var><dd>Integer constant. <var>value</var> is the numeric value. The type is some
|
||||
sort of generic integer type (for GDB, a host <code>int</code>); to specify
|
||||
the type explicitly, use ‘<samp><span class="samp">e</span></samp>’ instead.
|
||||
|
||||
<br><dt><code>r </code><var>value</var><dd>Real constant. <var>value</var> is the real value, which can be ‘<samp><span class="samp">INF</span></samp>’
|
||||
(optionally preceded by a sign) for infinity, ‘<samp><span class="samp">QNAN</span></samp>’ for a quiet
|
||||
NaN (not-a-number), or ‘<samp><span class="samp">SNAN</span></samp>’ for a signalling NaN. If it is a
|
||||
normal number the format is that accepted by the C library function
|
||||
<code>atof</code>.
|
||||
|
||||
<br><dt><code>s </code><var>string</var><dd>String constant. <var>string</var> is a string enclosed in either ‘<samp><span class="samp">'</span></samp>’
|
||||
(in which case ‘<samp><span class="samp">'</span></samp>’ characters within the string are represented as
|
||||
‘<samp><span class="samp">\'</span></samp>’ or ‘<samp><span class="samp">"</span></samp>’ (in which case ‘<samp><span class="samp">"</span></samp>’ characters within the
|
||||
string are represented as ‘<samp><span class="samp">\"</span></samp>’).
|
||||
|
||||
<br><dt><code>S </code><var>type-information</var><code> , </code><var>elements</var><code> , </code><var>bits</var><code> , </code><var>pattern</var><dd>Set constant. <var>type-information</var> is the type of the constant, as it
|
||||
would appear after a symbol descriptor (see <a href="String-Field.html#String-Field">String Field</a>).
|
||||
<var>elements</var> is the number of elements in the set (does this means
|
||||
how many bits of <var>pattern</var> are actually used, which would be
|
||||
redundant with the type, or perhaps the number of bits set in
|
||||
<var>pattern</var>? I don't get it), <var>bits</var> is the number of bits in the
|
||||
constant (meaning it specifies the length of <var>pattern</var>, I think),
|
||||
and <var>pattern</var> is a hexadecimal representation of the set. AIX
|
||||
documentation refers to a limit of 32 bytes, but I see no reason why
|
||||
this limit should exist. This form could probably be used for arbitrary
|
||||
constants, not just sets; the only catch is that <var>pattern</var> should be
|
||||
understood to be target, not host, byte order and format.
|
||||
</dl>
|
||||
|
||||
<p>The boolean, character, string, and set constants are not supported by
|
||||
GDB 4.9, but it ignores them. GDB 4.8 and earlier gave an error
|
||||
message and refused to read symbols from the file containing the
|
||||
constants.
|
||||
|
||||
<p>The above information is followed by ‘<samp><span class="samp">;</span></samp>’.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Cplusplus - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Symbol-Tables.html#Symbol-Tables" title="Symbol Tables">
|
||||
<link rel="next" href="Stab-Types.html#Stab-Types" title="Stab Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Cplusplus"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Stab-Types.html#Stab-Types">Stab Types</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">8 GNU C<tt>++</tt> Stabs</h2>
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Class-Names.html#Class-Names">Class Names</a>: C++ class names are both tags and typedefs.
|
||||
<li><a accesskey="2" href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>: C++ symbol names can be within other types.
|
||||
<li><a accesskey="3" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types">Basic Cplusplus Types</a>
|
||||
<li><a accesskey="4" href="Simple-Classes.html#Simple-Classes">Simple Classes</a>
|
||||
<li><a accesskey="5" href="Class-Instance.html#Class-Instance">Class Instance</a>
|
||||
<li><a accesskey="6" href="Methods.html#Methods">Methods</a>: Method definition
|
||||
<li><a accesskey="7" href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>: The ‘<samp><span class="samp">#</span></samp>’ type descriptor
|
||||
<li><a accesskey="8" href="Member-Type-Descriptor.html#Member-Type-Descriptor">Member Type Descriptor</a>: The ‘<samp><span class="samp">@</span></samp>’ type descriptor
|
||||
<li><a accesskey="9" href="Protections.html#Protections">Protections</a>
|
||||
<li><a href="Method-Modifiers.html#Method-Modifiers">Method Modifiers</a>
|
||||
<li><a href="Virtual-Methods.html#Virtual-Methods">Virtual Methods</a>
|
||||
<li><a href="Inheritance.html#Inheritance">Inheritance</a>
|
||||
<li><a href="Virtual-Base-Classes.html#Virtual-Base-Classes">Virtual Base Classes</a>
|
||||
<li><a href="Static-Members.html#Static-Members">Static Members</a>
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Cross-References - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Miscellaneous-Types.html#Miscellaneous-Types" title="Miscellaneous Types">
|
||||
<link rel="next" href="Subranges.html#Subranges" title="Subranges">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Cross-References"></a>
|
||||
<a name="Cross_002dReferences"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Subranges.html#Subranges">Subranges</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.3 Cross-References to Other Types</h3>
|
||||
|
||||
<p>A type can be used before it is defined; one common way to deal with
|
||||
that situation is just to use a type reference to a type which has not
|
||||
yet been defined.
|
||||
|
||||
<p>Another way is with the ‘<samp><span class="samp">x</span></samp>’ type descriptor, which is followed by
|
||||
‘<samp><span class="samp">s</span></samp>’ for a structure tag, ‘<samp><span class="samp">u</span></samp>’ for a union tag, or ‘<samp><span class="samp">e</span></samp>’ for
|
||||
a enumerator tag, followed by the name of the tag, followed by ‘<samp><span class="samp">:</span></samp>’.
|
||||
If the name contains ‘<samp><span class="samp">::</span></samp>’ between a ‘<samp><span class="samp"><</span></samp>’ and ‘<samp><span class="samp">></span></samp>’ pair (for
|
||||
C<tt>++</tt> templates), such a ‘<samp><span class="samp">::</span></samp>’ does not end the name—only a single
|
||||
‘<samp><span class="samp">:</span></samp>’ ends the name; see <a href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>.
|
||||
|
||||
<p>For example, the following C declarations:
|
||||
|
||||
<pre class="example"> struct foo;
|
||||
struct foo *bar;
|
||||
</pre>
|
||||
<p class="noindent">produce:
|
||||
|
||||
<pre class="example"> .stabs "bar:G16=*17=xsfoo:",32,0,0,0
|
||||
</pre>
|
||||
<p>Not all debuggers support the ‘<samp><span class="samp">x</span></samp>’ type descriptor, so on some
|
||||
machines GCC does not use it. I believe that for the above example it
|
||||
would just emit a reference to type 17 and never define it, but I
|
||||
haven't verified that.
|
||||
|
||||
<p>Modula-2 imported types, at least on AIX, use the ‘<samp><span class="samp">i</span></samp>’ type
|
||||
descriptor, which is followed by the name of the module from which the
|
||||
type is imported, followed by ‘<samp><span class="samp">:</span></samp>’, followed by the name of the
|
||||
type. There is then optionally a comma followed by type information for
|
||||
the type. This differs from merely naming the type (see <a href="Typedefs.html#Typedefs">Typedefs</a>) in
|
||||
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
|
||||
it, or whether this type descriptor is used with a nameless stab
|
||||
(see <a href="String-Field.html#String-Field">String Field</a>), or what. The symbol ends with ‘<samp><span class="samp">;</span></samp>’.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>ELF Linker Relocation - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Stab-Sections.html#Stab-Sections" title="Stab Sections">
|
||||
<link rel="prev" href="Stab-Section-Basics.html#Stab-Section-Basics" title="Stab Section Basics">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="ELF-Linker-Relocation"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Stab-Section-Basics.html#Stab-Section-Basics">Stab Section Basics</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Stab-Sections.html#Stab-Sections">Stab Sections</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="appendixsec">F.2 Having the Linker Relocate Stabs in ELF</h3>
|
||||
|
||||
<p>This section describes some Sun hacks for Stabs in ELF; it does not
|
||||
apply to COFF or SOM.
|
||||
|
||||
<p>To keep linking fast, you don't want the linker to have to relocate very
|
||||
many stabs. Making sure this is done for <code>N_SLINE</code>,
|
||||
<code>N_RBRAC</code>, and <code>N_LBRAC</code> stabs is the most important thing
|
||||
(see the descriptions of those stabs for more information). But Sun's
|
||||
stabs in ELF has taken this further, to make all addresses in the
|
||||
<code>n_value</code> field (functions and static variables) relative to the
|
||||
source file. For the <code>N_SO</code> symbol itself, Sun simply omits the
|
||||
address. To find the address of each section corresponding to a given
|
||||
source file, the compiler puts out symbols giving the address of each
|
||||
section for a given source file. Since these are ELF (not stab)
|
||||
symbols, the linker relocates them correctly without having to touch the
|
||||
stabs section. They are named <code>Bbss.bss</code> for the bss section,
|
||||
<code>Ddata.data</code> for the data section, and <code>Drodata.rodata</code> for
|
||||
the rodata section. For the text section, there is no such symbol (but
|
||||
there should be, see below). For an example of how these symbols work,
|
||||
See <a href="Stab-Section-Transformations.html#Stab-Section-Transformations">Stab Section Transformations</a>. GCC does not provide these symbols;
|
||||
it instead relies on the stabs getting relocated. Thus addresses which
|
||||
would normally be relative to <code>Bbss.bss</code>, etc., are already
|
||||
relocated. The Sun linker provided with Solaris 2.2 and earlier
|
||||
relocates stabs using normal ELF relocation information, as it would do
|
||||
for any section. Sun has been threatening 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 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 patch 101052-01 and Sun bug 1142109. With
|
||||
the Sun compiler this affects ‘<samp><span class="samp">S</span></samp>’ symbol descriptor stabs
|
||||
(see <a href="Statics.html#Statics">Statics</a>) and functions (see <a href="Procedures.html#Procedures">Procedures</a>). In the latter
|
||||
case, to adopt the clean solution (making the value of the stab relative
|
||||
to the start of the compilation unit), it would be necessary to invent a
|
||||
<code>Ttext.text</code> symbol, analogous to the <code>Bbss.bss</code>, etc.,
|
||||
symbols. I recommend this rather than using a zero value and getting
|
||||
the address from the ELF symbols.
|
||||
|
||||
<p>Finding the correct <code>Bbss.bss</code>, etc., symbol is difficult, because
|
||||
the linker simply concatenates the <code>.stab</code> sections from each
|
||||
<samp><span class="file">.o</span></samp> file without including any information about which part of a
|
||||
<code>.stab</code> section comes from which <samp><span class="file">.o</span></samp> file. The way GDB does
|
||||
this is to look for an ELF <code>STT_FILE</code> symbol which has the same
|
||||
name as the last component of the file name from the <code>N_SO</code> symbol
|
||||
in the stabs (for example, if the file name is <samp><span class="file">../../gdb/main.c</span></samp>,
|
||||
it looks for an ELF <code>STT_FILE</code> symbol named <code>main.c</code>). This
|
||||
loses if different files have the same name (they could be in different
|
||||
directories, a library could have been copied from one system to
|
||||
another, etc.). It would be much cleaner to have the <code>Bbss.bss</code>
|
||||
symbols in the stabs themselves. Having the linker relocate them there
|
||||
is no more work than having the linker relocate ELF symbols, and it
|
||||
solves the problem of having to associate the ELF and stab symbols.
|
||||
However, no one has yet designed or implemented such a scheme.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Enumerations - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Strings.html#Strings" title="Strings">
|
||||
<link rel="next" href="Structures.html#Structures" title="Structures">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Enumerations"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Structures.html#Structures">Structures</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Strings.html#Strings">Strings</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.7 Enumerations</h3>
|
||||
|
||||
<p>Enumerations are defined with the ‘<samp><span class="samp">e</span></samp>’ type descriptor.
|
||||
|
||||
<!-- FIXME: Where does this information properly go? Perhaps it is -->
|
||||
<!-- redundant with something we already explain. -->
|
||||
<p>The source line below declares an enumeration type at file scope.
|
||||
The type definition is located after the <code>N_RBRAC</code> that marks the end of
|
||||
the previous procedure's block scope, and before the <code>N_FUN</code> that marks
|
||||
the beginning of the next procedure's block scope. Therefore it does not
|
||||
describe a block local symbol, but a file local one.
|
||||
|
||||
<p>The source line:
|
||||
|
||||
<pre class="example"> enum e_places {first,second=3,last};
|
||||
</pre>
|
||||
<p class="noindent">generates the following stab:
|
||||
|
||||
<pre class="example"> .stabs "e_places:T22=efirst:0,second:3,last:4,;",128,0,0,0
|
||||
</pre>
|
||||
<p>The symbol descriptor (‘<samp><span class="samp">T</span></samp>’) says that the stab describes a
|
||||
structure, enumeration, or union tag. The type descriptor ‘<samp><span class="samp">e</span></samp>’,
|
||||
following the ‘<samp><span class="samp">22=</span></samp>’ of the type definition narrows it down to an
|
||||
enumeration type. Following the ‘<samp><span class="samp">e</span></samp>’ is a list of the elements of
|
||||
the enumeration. The format is ‘<samp><var>name</var><span class="samp">:</span><var>value</var><span class="samp">,</span></samp>’. The
|
||||
list of elements ends with ‘<samp><span class="samp">;</span></samp>’. The fact that <var>value</var> is
|
||||
specified as an integer can cause problems if the value is large. GCC
|
||||
2.5.2 tries to output it in octal in that case with a leading zero,
|
||||
which is probably a good thing, although GDB 4.11 supports octal only in
|
||||
cases where decimal is perfectly good. Negative decimal values are
|
||||
supported by both GDB and dbx.
|
||||
|
||||
<p>There is no standard way to specify the size of an enumeration type; it
|
||||
is determined by the architecture (normally all enumerations types are
|
||||
32 bits). Type attributes can be used to specify an enumeration type of
|
||||
another size for debuggers which support them; see <a href="String-Field.html#String-Field">String Field</a>.
|
||||
|
||||
<p>Enumeration types are unusual in that they define symbols for the
|
||||
enumeration values (<code>first</code>, <code>second</code>, and <code>third</code> in the
|
||||
above example), and even though these symbols are visible in the file as
|
||||
a whole (rather than being in a more local namespace like structure
|
||||
member names), they are defined in the type definition for the
|
||||
enumeration type rather than each having their own symbol. In order to
|
||||
be fast, GDB will only get symbols from such types (in its initial scan
|
||||
of the stabs) if the type is the first thing defined after a ‘<samp><span class="samp">T</span></samp>’ or
|
||||
‘<samp><span class="samp">t</span></samp>’ symbol descriptor (the above example fulfills this
|
||||
requirement). If the type does not have a name, the compiler should
|
||||
emit it in a nameless stab (see <a href="String-Field.html#String-Field">String Field</a>); GCC does this.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Expanded Reference - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Type-Descriptors.html#Type-Descriptors" title="Type Descriptors">
|
||||
<link rel="next" href="Questions.html#Questions" title="Questions">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Expanded-Reference"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Questions.html#Questions">Questions</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix D Expanded Reference by Stab Type</h2>
|
||||
|
||||
<!-- FIXME: This appendix should go away; see N_PSYM or N_SO for an example. -->
|
||||
<p>For a full list of stab types, and cross-references to where they are
|
||||
described, see <a href="Stab-Types.html#Stab-Types">Stab Types</a>. This appendix just covers certain
|
||||
stabs which are not yet described in the main body of this document;
|
||||
eventually the information will all be in one place.
|
||||
|
||||
<p>Format of an entry:
|
||||
|
||||
<p>The first line is the symbol type (see <samp><span class="file">include/aout/stab.def</span></samp>).
|
||||
|
||||
<p>The second line describes the language constructs the symbol type
|
||||
represents.
|
||||
|
||||
<p>The third line is the stab format with the significant stab fields
|
||||
named and the rest NIL.
|
||||
|
||||
<p>Subsequent lines expand upon the meaning and possible values for each
|
||||
significant stab field.
|
||||
|
||||
<p>Finally, any further information.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="N_005fPC.html#N_005fPC">N_PC</a>: Pascal global symbol
|
||||
<li><a accesskey="2" href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a>: Number of symbols
|
||||
<li><a accesskey="3" href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a>: No DST map
|
||||
<li><a accesskey="4" href="N_005fM2C.html#N_005fM2C">N_M2C</a>: Modula-2 compilation unit
|
||||
<li><a accesskey="5" href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a>: Path to .cb file for Sun source code browser
|
||||
<li><a accesskey="6" href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a>: GNU Modula2 definition module dependency
|
||||
<li><a accesskey="7" href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a>: GNU C++ exception variable
|
||||
<li><a accesskey="8" href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a>: Modula2 information "for imc"
|
||||
<li><a accesskey="9" href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a>: GNU C++ "catch" clause
|
||||
<li><a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>: Structure or union element
|
||||
<li><a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>: Modula2 scope information (Sun only)
|
||||
<li><a href="Gould.html#Gould">Gould</a>: non-base register symbols used on Gould systems
|
||||
<li><a href="N_005fLENG.html#N_005fLENG">N_LENG</a>: Length of preceding entry
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Flow - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="next" href="Stabs-Format.html#Stabs-Format" title="Stabs Format">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Flow"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Stabs-Format.html#Stabs-Format">Stabs Format</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Overview.html#Overview">Overview</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">1.1 Overview of Debugging Information Flow</h3>
|
||||
|
||||
<p>The GNU C compiler compiles C source in a <samp><span class="file">.c</span></samp> file into assembly
|
||||
language in a <samp><span class="file">.s</span></samp> file, which the assembler translates into
|
||||
a <samp><span class="file">.o</span></samp> file, which the linker combines with other <samp><span class="file">.o</span></samp> files and
|
||||
libraries to produce an executable file.
|
||||
|
||||
<p>With the ‘<samp><span class="samp">-g</span></samp>’ option, GCC puts in the <samp><span class="file">.s</span></samp> file additional
|
||||
debugging information, which is slightly transformed by the assembler
|
||||
and linker, and carried through into the final executable. This
|
||||
debugging information describes features of the source file like line
|
||||
numbers, the types and scopes of variables, and function names,
|
||||
parameters, and scopes.
|
||||
|
||||
<p>For some object file formats, the debugging information is encapsulated
|
||||
in assembler directives known collectively as <dfn>stab</dfn> (symbol table)
|
||||
directives, which are interspersed with the generated code. Stabs are
|
||||
the native format for debugging information in the a.out and XCOFF
|
||||
object file formats. The GNU tools can also emit stabs in the COFF and
|
||||
ECOFF object file formats.
|
||||
|
||||
<p>The assembler adds the information from stabs to the symbol information
|
||||
it places by default in the symbol table and the string table of the
|
||||
<samp><span class="file">.o</span></samp> file it is building. The linker consolidates the <samp><span class="file">.o</span></samp>
|
||||
files into one executable file, with one symbol table and one string
|
||||
table. Debuggers use the symbol and string tables in the executable as
|
||||
a source of debugging information about the program.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Function Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Unions.html#Unions" title="Unions">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Function-Types"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Unions.html#Unions">Unions</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.11 Function Types</h3>
|
||||
|
||||
<p>Various types can be defined for function variables. These types are
|
||||
not used in defining functions (see <a href="Procedures.html#Procedures">Procedures</a>); they are used for
|
||||
things like pointers to functions.
|
||||
|
||||
<p>The simple, traditional, type is type descriptor ‘<samp><span class="samp">f</span></samp>’ is followed by
|
||||
type information for the return type of the function, followed by a
|
||||
semicolon.
|
||||
|
||||
<p>This does not deal with functions for which the number and types of the
|
||||
parameters are part of the type, as in Modula-2 or ANSI C. AIX provides
|
||||
extensions to specify these, using the ‘<samp><span class="samp">f</span></samp>’, ‘<samp><span class="samp">F</span></samp>’, ‘<samp><span class="samp">p</span></samp>’, and
|
||||
‘<samp><span class="samp">R</span></samp>’ type descriptors.
|
||||
|
||||
<p>First comes the type descriptor. If it is ‘<samp><span class="samp">f</span></samp>’ or ‘<samp><span class="samp">F</span></samp>’, this
|
||||
type involves a function rather than a procedure, and the type
|
||||
information for the return type of the function follows, followed by a
|
||||
comma. Then comes the number of parameters to the function and a
|
||||
semicolon. Then, for each parameter, there is the name of the parameter
|
||||
followed by a colon (this is only present for type descriptors ‘<samp><span class="samp">R</span></samp>’
|
||||
and ‘<samp><span class="samp">F</span></samp>’ which represent Pascal function or procedure parameters),
|
||||
type information for the parameter, a comma, 0 if passed by reference or
|
||||
1 if passed by value, and a semicolon. The type definition ends with a
|
||||
semicolon.
|
||||
|
||||
<p>For example, this variable definition:
|
||||
|
||||
<pre class="example"> int (*g_pf)();
|
||||
</pre>
|
||||
<p class="noindent">generates the following code:
|
||||
|
||||
<pre class="example"> .stabs "g_pf:G24=*25=f1",32,0,0,0
|
||||
.common _g_pf,4,"bss"
|
||||
</pre>
|
||||
<p>The variable defines a new type, 24, which is a pointer to another new
|
||||
type, 25, which is a function returning <code>int</code>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,514 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>GNU Free Documentation License - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Stab-Sections.html#Stab-Sections" title="Stab Sections">
|
||||
<link rel="next" href="Symbol-Types-Index.html#Symbol-Types-Index" title="Symbol Types Index">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="GNU-Free-Documentation-License"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Symbol-Types-Index.html#Symbol-Types-Index">Symbol Types Index</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Stab-Sections.html#Stab-Sections">Stab Sections</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix G GNU Free Documentation License</h2>
|
||||
|
||||
<!-- The GNU Free Documentation License. -->
|
||||
<div align="center">Version 1.3, 3 November 2008</div>
|
||||
|
||||
<!-- This file is intended to be included within another document, -->
|
||||
<!-- hence no sectioning command or @node. -->
|
||||
<pre class="display"> Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
||||
<a href="http://fsf.org/">http://fsf.org/</a>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
</pre>
|
||||
<ol type=1 start=0>
|
||||
<li>PREAMBLE
|
||||
|
||||
<p>The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document <dfn>free</dfn> in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
<p>This License is a kind of “copyleft”, which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
<p>We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
<li>APPLICABILITY AND DEFINITIONS
|
||||
|
||||
<p>This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The “Document”, below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as “you”. You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
<p>A “Modified Version” of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
<p>A “Secondary Section” is a named appendix or a front-matter section
|
||||
of the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall
|
||||
subject (or to related matters) and contains nothing that could fall
|
||||
directly within that overall subject. (Thus, if the Document is in
|
||||
part a textbook of mathematics, a Secondary Section may not explain
|
||||
any mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
<p>The “Invariant Sections” are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
<p>The “Cover Texts” are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
<p>A “Transparent” copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not “Transparent” is called “Opaque”.
|
||||
|
||||
<p>Examples of suitable formats for Transparent copies include plain
|
||||
<span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
|
||||
format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
|
||||
<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
|
||||
PostScript or <acronym>PDF</acronym> designed for human modification. Examples
|
||||
of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
|
||||
<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
|
||||
read and edited only by proprietary word processors, <acronym>SGML</acronym> or
|
||||
<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
|
||||
not generally available, and the machine-generated <acronym>HTML</acronym>,
|
||||
PostScript or <acronym>PDF</acronym> produced by some word processors for
|
||||
output purposes only.
|
||||
|
||||
<p>The “Title Page” means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, “Title Page” means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
<p>The “publisher” means any person or entity that distributes copies
|
||||
of the Document to the public.
|
||||
|
||||
<p>A section “Entitled XYZ” means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as “Acknowledgements”,
|
||||
“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title”
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section “Entitled XYZ” according to this definition.
|
||||
|
||||
<p>The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
<li>VERBATIM COPYING
|
||||
|
||||
<p>You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
<p>You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
<li>COPYING IN QUANTITY
|
||||
|
||||
<p>If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
<p>If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
<p>If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
<p>It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
<li>MODIFICATIONS
|
||||
|
||||
<p>You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
<ol type=A start=1>
|
||||
<li>Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
|
||||
<li>List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
|
||||
<li>State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
|
||||
<li>Preserve all the copyright notices of the Document.
|
||||
|
||||
<li>Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
|
||||
<li>Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
|
||||
<li>Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
|
||||
<li>Include an unaltered copy of this License.
|
||||
|
||||
<li>Preserve the section Entitled “History”, Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled “History” in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
|
||||
<li>Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the “History” section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
|
||||
<li>For any section Entitled “Acknowledgements” or “Dedications”, Preserve
|
||||
the Title of the section, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements and/or
|
||||
dedications given therein.
|
||||
|
||||
<li>Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
|
||||
<li>Delete any section Entitled “Endorsements”. Such a section
|
||||
may not be included in the Modified Version.
|
||||
|
||||
<li>Do not retitle any existing section to be Entitled “Endorsements” or
|
||||
to conflict in title with any Invariant Section.
|
||||
|
||||
<li>Preserve any Warranty Disclaimers.
|
||||
</ol>
|
||||
|
||||
<p>If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
<p>You may add a section Entitled “Endorsements”, provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties—for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
<p>You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
<p>The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
<li>COMBINING DOCUMENTS
|
||||
|
||||
<p>You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
<p>The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
<p>In the combination, you must combine any sections Entitled “History”
|
||||
in the various original documents, forming one section Entitled
|
||||
“History”; likewise combine any sections Entitled “Acknowledgements”,
|
||||
and any sections Entitled “Dedications”. You must delete all
|
||||
sections Entitled “Endorsements.”
|
||||
|
||||
<li>COLLECTIONS OF DOCUMENTS
|
||||
|
||||
<p>You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
<p>You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
<li>AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
<p>A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an “aggregate” if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
<p>If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
<li>TRANSLATION
|
||||
|
||||
<p>Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
<p>If a section in the Document is Entitled “Acknowledgements”,
|
||||
“Dedications”, or “History”, the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
<li>TERMINATION
|
||||
|
||||
<p>You may not copy, modify, sublicense, or distribute the Document
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense, or distribute it is void, and
|
||||
will automatically terminate your rights under this License.
|
||||
|
||||
<p>However, if you cease all violation of this License, then your license
|
||||
from a particular copyright holder is reinstated (a) provisionally,
|
||||
unless and until the copyright holder explicitly and finally
|
||||
terminates your license, and (b) permanently, if the copyright holder
|
||||
fails to notify you of the violation by some reasonable means prior to
|
||||
60 days after the cessation.
|
||||
|
||||
<p>Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
<p>Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, receipt of a copy of some or all of the same material does
|
||||
not give you any rights to use it.
|
||||
|
||||
<li>FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
<p>The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
|
||||
|
||||
<p>Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License “or any later version” applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation. If the Document
|
||||
specifies that a proxy can decide which future versions of this
|
||||
License can be used, that proxy's public statement of acceptance of a
|
||||
version permanently authorizes you to choose that version for the
|
||||
Document.
|
||||
|
||||
<li>RELICENSING
|
||||
|
||||
<p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
|
||||
World Wide Web server that publishes copyrightable works and also
|
||||
provides prominent facilities for anybody to edit those works. A
|
||||
public wiki that anybody can edit is an example of such a server. A
|
||||
“Massive Multiauthor Collaboration” (or “MMC”) contained in the
|
||||
site means any set of copyrightable works thus published on the MMC
|
||||
site.
|
||||
|
||||
<p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
|
||||
license published by Creative Commons Corporation, a not-for-profit
|
||||
corporation with a principal place of business in San Francisco,
|
||||
California, as well as future copyleft versions of that license
|
||||
published by that same organization.
|
||||
|
||||
<p>“Incorporate” means to publish or republish a Document, in whole or
|
||||
in part, as part of another Document.
|
||||
|
||||
<p>An MMC is “eligible for relicensing” if it is licensed under this
|
||||
License, and if all works that were first published under this License
|
||||
somewhere other than this MMC, and subsequently incorporated in whole
|
||||
or in part into the MMC, (1) had no cover texts or invariant sections,
|
||||
and (2) were thus incorporated prior to November 1, 2008.
|
||||
|
||||
<p>The operator of an MMC Site may republish an MMC contained in the site
|
||||
under CC-BY-SA on the same site at any time before August 1, 2009,
|
||||
provided the MMC is eligible for relicensing.
|
||||
|
||||
</ol>
|
||||
|
||||
<h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
|
||||
|
||||
<p>To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.
|
||||
</pre>
|
||||
<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the “with<small class="dots">...</small>Texts.” line with this:
|
||||
|
||||
<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
|
||||
the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
|
||||
being <var>list</var>.
|
||||
</pre>
|
||||
<p>If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
<p>If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
||||
|
||||
<!-- Local Variables: -->
|
||||
<!-- ispell-local-pdict: "ispell-dict" -->
|
||||
<!-- End: -->
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Global Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Stack-Variables.html#Stack-Variables" title="Stack Variables">
|
||||
<link rel="next" href="Register-Variables.html#Register-Variables" title="Register Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Global-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Register-Variables.html#Register-Variables">Register Variables</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Stack-Variables.html#Stack-Variables">Stack Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.2 Global Variables</h3>
|
||||
|
||||
<p><a name="index-N_005fGSYM-27"></a><a name="index-C_005fGSYM-28"></a><!-- FIXME: verify for sure that it really is C_GSYM on XCOFF -->
|
||||
A variable whose scope is not specific to just one source file is
|
||||
represented by the ‘<samp><span class="samp">G</span></samp>’ symbol descriptor. These stabs use the
|
||||
<code>N_GSYM</code> stab type (C_GSYM for XCOFF). The type information for
|
||||
the stab (see <a href="String-Field.html#String-Field">String Field</a>) gives the type of the variable.
|
||||
|
||||
<p>For example, the following source code:
|
||||
|
||||
<pre class="example"> char g_foo = 'c';
|
||||
</pre>
|
||||
<p class="noindent">yields the following assembly code:
|
||||
|
||||
<pre class="example"> .stabs "g_foo:G2",32,0,0,0 # <span class="roman">32 is N_GSYM</span>
|
||||
.global _g_foo
|
||||
.data
|
||||
_g_foo:
|
||||
.byte 99
|
||||
</pre>
|
||||
<p>The address of the variable represented by the <code>N_GSYM</code> is not
|
||||
contained in the <code>N_GSYM</code> stab. The debugger gets this information
|
||||
from the external symbol for the global variable. In the example above,
|
||||
the <code>.global _g_foo</code> and <code>_g_foo:</code> lines tell the assembler to
|
||||
produce an external symbol.
|
||||
|
||||
<p>Some compilers, like GCC, output <code>N_GSYM</code> stabs only once, where
|
||||
the variable is defined. Other compilers, like SunOS4 /bin/cc, output a
|
||||
<code>N_GSYM</code> stab for each compilation unit which references the
|
||||
variable.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Gould - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fSCOPE.html#N_005fSCOPE" title="N_SCOPE">
|
||||
<link rel="next" href="N_005fLENG.html#N_005fLENG" title="N_LENG">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Gould"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fLENG.html#N_005fLENG">N_LENG</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.12 Non-base registers on Gould systems</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stab?</code>: <b>N_NBTEXT</b><var><a name="index-N_005fNBTEXT-75"></a></var><br>
|
||||
— <code>.stab?</code>: <b>N_NBDATA</b><var><a name="index-N_005fNBDATA-76"></a></var><br>
|
||||
— <code>.stab?</code>: <b>N_NBBSS</b><var><a name="index-N_005fNBBSS-77"></a></var><br>
|
||||
— <code>.stab?</code>: <b>N_NBSTS</b><var><a name="index-N_005fNBSTS-78"></a></var><br>
|
||||
— <code>.stab?</code>: <b>N_NBLCS</b><var><a name="index-N_005fNBLCS-79"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fNBTEXT-80"></a><a name="index-N_005fNBDATA-81"></a><a name="index-N_005fNBBSS-82"></a><a name="index-N_005fNBSTS-83"></a><a name="index-N_005fNBLCS-84"></a>These are used on Gould systems for non-base registers syms.
|
||||
|
||||
<p>However, the following values are not the values used by Gould; they are
|
||||
the values which GNU has been documenting for these values for a long
|
||||
time, without actually checking what Gould uses. I include these values
|
||||
only because perhaps some someone actually did something with the GNU
|
||||
information (I hope not, why GNU knowingly assigned wrong values to
|
||||
these in the header file is a complete mystery to me).
|
||||
|
||||
<pre class="example"> 240 0xf0 N_NBTEXT ??
|
||||
242 0xf2 N_NBDATA ??
|
||||
244 0xf4 N_NBBSS ??
|
||||
246 0xf6 N_NBSTS ??
|
||||
248 0xf8 N_NBLCS ??
|
||||
</pre>
|
||||
</blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Include Files - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Source-Files.html#Source-Files" title="Source Files">
|
||||
<link rel="next" href="Line-Numbers.html#Line-Numbers" title="Line Numbers">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Include-Files"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Line-Numbers.html#Line-Numbers">Line Numbers</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Source-Files.html#Source-Files">Source Files</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.3 Names of Include Files</h3>
|
||||
|
||||
<p>There are several schemes for dealing with include files: the
|
||||
traditional <code>N_SOL</code> approach, Sun's <code>N_BINCL</code> approach, and the
|
||||
XCOFF <code>C_BINCL</code> approach (which despite the similar name has little in
|
||||
common with <code>N_BINCL</code>).
|
||||
|
||||
<p><a name="index-N_005fSOL-4"></a>An <code>N_SOL</code> symbol specifies which include file subsequent symbols
|
||||
refer to. The string field is the name of the file and the value is the
|
||||
text address corresponding to the end of the previous include file and
|
||||
the start of this one. To specify the main source file again, use an
|
||||
<code>N_SOL</code> symbol with the name of the main source file.
|
||||
|
||||
<p><a name="index-N_005fBINCL-5"></a><a name="index-N_005fEINCL-6"></a><a name="index-N_005fEXCL-7"></a>The <code>N_BINCL</code> approach works as follows. An <code>N_BINCL</code> symbol
|
||||
specifies the start of an include file. In an object file, only the
|
||||
string is significant; the linker puts data into some of the other
|
||||
fields. The end of the include file is marked by an <code>N_EINCL</code>
|
||||
symbol (which has no string field). In an object file, there is no
|
||||
significant data in the <code>N_EINCL</code> symbol. <code>N_BINCL</code> and
|
||||
<code>N_EINCL</code> can be nested.
|
||||
|
||||
<p>If the linker detects that two source files have identical stabs between
|
||||
an <code>N_BINCL</code> and <code>N_EINCL</code> pair (as will generally be the case
|
||||
for a header file), then it only puts out the stabs once. Each
|
||||
additional occurrence is replaced by an <code>N_EXCL</code> symbol. I believe
|
||||
the GNU linker and the Sun (both SunOS4 and Solaris) linker are the only
|
||||
ones which supports this feature.
|
||||
|
||||
<p>A linker which supports this feature will set the value of a
|
||||
<code>N_BINCL</code> symbol to the total of all the characters in the stabs
|
||||
strings included in the header file, omitting any file numbers. The
|
||||
value of an <code>N_EXCL</code> symbol is the same as the value of the
|
||||
<code>N_BINCL</code> symbol it replaces. This information can be used to
|
||||
match up <code>N_EXCL</code> and <code>N_BINCL</code> symbols which have the same
|
||||
filename. The <code>N_EINCL</code> value, and the values of the other and
|
||||
description fields for all three, appear to always be zero.
|
||||
|
||||
<p><a name="index-C_005fBINCL-8"></a><a name="index-C_005fEINCL-9"></a>For the start of an include file in XCOFF, use the <samp><span class="file">.bi</span></samp> assembler
|
||||
directive, which generates a <code>C_BINCL</code> symbol. A <samp><span class="file">.ei</span></samp>
|
||||
directive, which generates a <code>C_EINCL</code> symbol, denotes the end of
|
||||
the include file. Both directives are followed by the name of the
|
||||
source file in quotes, which becomes the string for the symbol.
|
||||
The value of each symbol, produced automatically by the assembler
|
||||
and linker, is the offset into the executable of the beginning
|
||||
(inclusive, as you'd expect) or end (inclusive, as you would not expect)
|
||||
of the portion of the COFF line table that corresponds to this include
|
||||
file. <code>C_BINCL</code> and <code>C_EINCL</code> do not nest.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Inheritance - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Virtual-Methods.html#Virtual-Methods" title="Virtual Methods">
|
||||
<link rel="next" href="Virtual-Base-Classes.html#Virtual-Base-Classes" title="Virtual Base Classes">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Inheritance"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Virtual-Base-Classes.html#Virtual-Base-Classes">Virtual Base Classes</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Virtual-Methods.html#Virtual-Methods">Virtual Methods</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.12 Inheritance</h3>
|
||||
|
||||
<p>Stabs describing C<tt>++</tt> derived classes include additional sections that
|
||||
describe the inheritance hierarchy of the class. A derived class stab
|
||||
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
|
||||
or public. It also gives the offset into the object of the portion of
|
||||
the object corresponding to each base class.
|
||||
|
||||
<p>This additional information is embedded in the class stab following the
|
||||
number of bytes in the struct. First the number of base classes
|
||||
appears bracketed by an exclamation point and a comma.
|
||||
|
||||
<p>Then for each base type there repeats a series: a virtual character, a
|
||||
visibility character, a number, a comma, another number, and a
|
||||
semi-colon.
|
||||
|
||||
<p>The virtual character is ‘<samp><span class="samp">1</span></samp>’ if the base class is virtual and
|
||||
‘<samp><span class="samp">0</span></samp>’ if not. The visibility character is ‘<samp><span class="samp">2</span></samp>’ if the derivation
|
||||
is public, ‘<samp><span class="samp">1</span></samp>’ if it is protected, and ‘<samp><span class="samp">0</span></samp>’ if it is private.
|
||||
Debuggers should ignore virtual or visibility characters they do not
|
||||
recognize, and assume a reasonable default (such as public and
|
||||
non-virtual) (GDB 4.11 does not, but this should be fixed in the next
|
||||
GDB release).
|
||||
|
||||
<p>The number following the virtual and visibility characters is the offset
|
||||
from the start of the object to the part of the object pertaining to the
|
||||
base class.
|
||||
|
||||
<p>After the comma, the second number is a type_descriptor for the base
|
||||
type. Finally a semi-colon ends the series, which repeats for each
|
||||
base class.
|
||||
|
||||
<p>The source below defines three base classes <code>A</code>, <code>B</code>, and
|
||||
<code>C</code> and the derived class <code>D</code>.
|
||||
|
||||
<pre class="example"> class A {
|
||||
public:
|
||||
int Adat;
|
||||
virtual int A_virt (int arg) { return arg; };
|
||||
};
|
||||
|
||||
class B {
|
||||
public:
|
||||
int B_dat;
|
||||
virtual int B_virt (int arg) {return arg; };
|
||||
};
|
||||
|
||||
class C {
|
||||
public:
|
||||
int Cdat;
|
||||
virtual int C_virt (int arg) {return arg; };
|
||||
};
|
||||
|
||||
class D : A, virtual B, public C {
|
||||
public:
|
||||
int Ddat;
|
||||
virtual int A_virt (int arg ) { return arg+1; };
|
||||
virtual int B_virt (int arg) { return arg+2; };
|
||||
virtual int C_virt (int arg) { return arg+3; };
|
||||
virtual int D_virt (int arg) { return arg; };
|
||||
};
|
||||
</pre>
|
||||
<p>Class stabs similar to the ones described earlier are generated for
|
||||
each base class.
|
||||
|
||||
<!-- FIXME!!! the linebreaks in the following example probably make the -->
|
||||
<!-- examples literally unusable, but I don't know any other way to get -->
|
||||
<!-- them on the page. -->
|
||||
<!-- One solution would be to put some of the type definitions into -->
|
||||
<!-- separate stabs, even if that's not exactly what the compiler actually -->
|
||||
<!-- emits. -->
|
||||
<pre class="smallexample"> .stabs "A:T20=s8Adat:1,0,32;$vf20:21=*22=ar1;0;1;17,32;
|
||||
A_virt::23=##1;:i;2A*-2147483647;20;;;~%20;",128,0,0,0
|
||||
|
||||
.stabs "B:Tt25=s8Bdat:1,0,32;$vf25:21,32;B_virt::26=##1;
|
||||
:i;2A*-2147483647;25;;;~%25;",128,0,0,0
|
||||
|
||||
.stabs "C:Tt28=s8Cdat:1,0,32;$vf28:21,32;C_virt::29=##1;
|
||||
:i;2A*-2147483647;28;;;~%28;",128,0,0,0
|
||||
</pre>
|
||||
<p>In the stab describing derived class <code>D</code> below, the information about
|
||||
the derivation of this class is encoded as follows.
|
||||
|
||||
<pre class="display"> .stabs "derived_class_name:symbol_descriptors(struct tag&type)=
|
||||
type_descriptor(struct)struct_bytes(32)!num_bases(3),
|
||||
base_virtual(no)inheritance_public(no)base_offset(0),
|
||||
base_class_type_ref(A);
|
||||
base_virtual(yes)inheritance_public(no)base_offset(NIL),
|
||||
base_class_type_ref(B);
|
||||
base_virtual(no)inheritance_public(yes)base_offset(64),
|
||||
base_class_type_ref(C); <small class="dots">...</small>
|
||||
</pre>
|
||||
<!-- FIXME! fake linebreaks. -->
|
||||
<pre class="smallexample"> .stabs "D:Tt31=s32!3,000,20;100,25;0264,28;$vb25:24,128;Ddat:
|
||||
1,160,32;A_virt::32=##1;:i;2A*-2147483647;20;;B_virt:
|
||||
:32:i;2A*-2147483647;25;;C_virt::32:i;2A*-2147483647;
|
||||
28;;D_virt::32:i;2A*-2147483646;31;;;~%20;",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Line Numbers - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Include-Files.html#Include-Files" title="Include Files">
|
||||
<link rel="next" href="Procedures.html#Procedures" title="Procedures">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Line-Numbers"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Procedures.html#Procedures">Procedures</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Include-Files.html#Include-Files">Include Files</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.4 Line Numbers</h3>
|
||||
|
||||
<p><a name="index-N_005fSLINE-10"></a>An <code>N_SLINE</code> symbol represents the start of a source line. The
|
||||
desc field contains the line number and the value contains the code
|
||||
address for the start of that source line. On most machines the address
|
||||
is absolute; for stabs in sections (see <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>), it is
|
||||
relative to the function in which the <code>N_SLINE</code> symbol occurs.
|
||||
|
||||
<p><a name="index-N_005fDSLINE-11"></a><a name="index-N_005fBSLINE-12"></a>GNU documents <code>N_DSLINE</code> and <code>N_BSLINE</code> symbols for line
|
||||
numbers in the data or bss segments, respectively. They are identical
|
||||
to <code>N_SLINE</code> but are relocated differently by the linker. They
|
||||
were intended to be used to describe the source location of a variable
|
||||
declaration, but I believe that GCC2 actually puts the line number in
|
||||
the desc field of the stab for the variable itself. GDB has been
|
||||
ignoring these symbols (unless they contain a string field) since
|
||||
at least GDB 3.5.
|
||||
|
||||
<p>For single source lines that generate discontiguous code, such as flow
|
||||
of control statements, there may be more than one line number entry for
|
||||
the same source line. In this case there is a line number entry at the
|
||||
start of each code range, each with the same line number.
|
||||
|
||||
<p>XCOFF does not use stabs for line numbers. Instead, it uses COFF line
|
||||
numbers (which are outside the scope of this document). Standard COFF
|
||||
line numbers cannot deal with include files, but in XCOFF this is fixed
|
||||
with the <code>C_BINCL</code> method of marking include files (see <a href="Include-Files.html#Include-Files">Include Files</a>).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Local Variable Parameters - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Parameters.html#Parameters" title="Parameters">
|
||||
<link rel="prev" href="Register-Parameters.html#Register-Parameters" title="Register Parameters">
|
||||
<link rel="next" href="Reference-Parameters.html#Reference-Parameters" title="Reference Parameters">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Local-Variable-Parameters"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Register-Parameters.html#Register-Parameters">Register Parameters</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Parameters.html#Parameters">Parameters</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">4.7.2 Storing Parameters as Local Variables</h4>
|
||||
|
||||
<p>There is a case similar to an argument in a register, which is an
|
||||
argument that is actually stored as a local variable. Sometimes this
|
||||
happens when the argument was passed in a register and then the compiler
|
||||
stores it as a local variable. If possible, the compiler should claim
|
||||
that it's in a register, but this isn't always done.
|
||||
|
||||
<p>If a parameter is passed as one type and converted to a smaller type by
|
||||
the prologue (for example, the parameter is declared as a <code>float</code>,
|
||||
but the calling conventions specify that it is passed as a
|
||||
<code>double</code>), then GCC2 (sometimes) uses a pair of symbols. The first
|
||||
symbol uses symbol descriptor ‘<samp><span class="samp">p</span></samp>’ and the type which is passed.
|
||||
The second symbol has the type and location which the parameter actually
|
||||
has after the prologue. For example, suppose the following C code
|
||||
appears with no prototypes involved:
|
||||
|
||||
<pre class="example"> void
|
||||
subr (f)
|
||||
float f;
|
||||
{
|
||||
</pre>
|
||||
<p>if <code>f</code> is passed as a double at stack offset 8, and the prologue
|
||||
converts it to a float in register number 0, then the stabs look like:
|
||||
|
||||
<pre class="example"> .stabs "f:p13",160,0,3,8 # <span class="roman">160 is </span><code>N_PSYM</code><span class="roman">, here 13 is </span><code>double</code>
|
||||
.stabs "f:r12",64,0,3,0 # <span class="roman">64 is </span><code>N_RSYM</code><span class="roman">, here 12 is </span><code>float</code>
|
||||
</pre>
|
||||
<p>In both stabs 3 is the line number where <code>f</code> is declared
|
||||
(see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>).
|
||||
|
||||
<p><a name="index-N_005fLSYM_002c-for-parameter-48"></a>GCC, at least on the 960, has another solution to the same problem. It
|
||||
uses a single ‘<samp><span class="samp">p</span></samp>’ symbol descriptor for an argument which is stored
|
||||
as a local variable but uses <code>N_LSYM</code> instead of <code>N_PSYM</code>. In
|
||||
this case, the value of the symbol is an offset relative to the local
|
||||
variables for that function, not relative to the arguments; on some
|
||||
machines those are the same thing, but not on all.
|
||||
|
||||
<!-- This is mostly just background info; the part that logically belongs -->
|
||||
<!-- here is the last sentence. -->
|
||||
<p>On the VAX or on other machines in which the calling convention includes
|
||||
the number of words of arguments actually passed, the debugger (GDB at
|
||||
least) uses the parameter symbols to keep track of whether it needs to
|
||||
print nameless arguments in addition to the formal parameters which it
|
||||
has printed because each one has a stab. For example, in
|
||||
|
||||
<pre class="example"> extern int fprintf (FILE *stream, char *format, ...);
|
||||
...
|
||||
fprintf (stdout, "%d\n", x);
|
||||
</pre>
|
||||
<p>there are stabs for <code>stream</code> and <code>format</code>. On most machines,
|
||||
the debugger can only print those two arguments (because it has no way
|
||||
of knowing that additional arguments were passed), but on the VAX or
|
||||
other machines with a calling convention which indicates the number of
|
||||
words of arguments, the debugger can print all three arguments. To do
|
||||
so, the parameter symbol (symbol descriptor ‘<samp><span class="samp">p</span></samp>’) (not necessarily
|
||||
‘<samp><span class="samp">r</span></samp>’ or symbol descriptor omitted symbols) needs to contain the
|
||||
actual type as passed (for example, <code>double</code> not <code>float</code> if it
|
||||
is passed as a double and converted to a float).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Macro define and undefine - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Types.html#Types" title="Types">
|
||||
<link rel="next" href="Symbol-Tables.html#Symbol-Tables" title="Symbol Tables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Macro-define-and-undefine"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Types.html#Types">Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">6 Representation of #define and #undef</h2>
|
||||
|
||||
<p>This section describes the stabs support for macro define and undefine
|
||||
information, supported on some systems. (e.g., with <samp><span class="option">-g3</span></samp>
|
||||
<samp><span class="option">-gstabs</span></samp> when using GCC).
|
||||
|
||||
<p>A <code>#define </code><var>macro-name</var> <var>macro-body</var> is represented with
|
||||
an <code>N_MAC_DEFINE</code> stab with a string field of
|
||||
<var>macro-name</var> <var>macro-body</var>.
|
||||
<a name="index-N_005fMAC_005fDEFINE-51"></a>
|
||||
An <code>#undef </code><var>macro-name</var> is represented with an
|
||||
<code>N_MAC_UNDEF</code> stabs with a string field of simply
|
||||
<var>macro-name</var>.
|
||||
<a name="index-N_005fMAC_005fUNDEF-52"></a>
|
||||
For both <code>N_MAC_DEFINE</code> and <code>N_MAC_UNDEF</code>, the desc field is
|
||||
the line number within the file where the corresponding <code>#define</code>
|
||||
or <code>#undef</code> occurred.
|
||||
|
||||
<p>For example, the following C code:
|
||||
|
||||
<pre class="example"> #define NONE 42
|
||||
#define TWO(a, b) (a + (a) + 2 * b)
|
||||
#define ONE(c) (c + 19)
|
||||
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
func(NONE, TWO(10, 11));
|
||||
func(NONE, ONE(23));
|
||||
|
||||
#undef ONE
|
||||
#define ONE(c) (c + 23)
|
||||
|
||||
func(NONE, ONE(-23));
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
int global;
|
||||
|
||||
func(int arg1, int arg2)
|
||||
{
|
||||
global = arg1 + arg2;
|
||||
}
|
||||
</pre>
|
||||
<p class="noindent">produces the following stabs (as well as many others):
|
||||
|
||||
<pre class="example"> .stabs "NONE 42",54,0,1,0
|
||||
.stabs "TWO(a,b) (a + (a) + 2 * b)",54,0,2,0
|
||||
.stabs "ONE(c) (c + 19)",54,0,3,0
|
||||
.stabs "ONE",58,0,10,0
|
||||
.stabs "ONE(c) (c + 23)",54,0,11,0
|
||||
</pre>
|
||||
<p class="noindent">NOTE: In the above example, <code>54</code> is <code>N_MAC_DEFINE</code> and
|
||||
<code>58</code> is <code>N_MAC_UNDEF</code>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Main Program - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="next" href="Source-Files.html#Source-Files" title="Source Files">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Main-Program"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Source-Files.html#Source-Files">Source Files</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.1 Main Program</h3>
|
||||
|
||||
<p><a name="index-N_005fMAIN-1"></a>Most languages allow the main program to have any name. The
|
||||
<code>N_MAIN</code> stab type tells the debugger the name that is used in this
|
||||
program. Only the string field is significant; it is the name of
|
||||
a function which is the main program. Most C compilers do not use this
|
||||
stab (they expect the debugger to assume that the name is <code>main</code>),
|
||||
but some C compilers emit an <code>N_MAIN</code> stab for the <code>main</code>
|
||||
function. I'm not sure how XCOFF handles this.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Member Type Descriptor - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Method-Type-Descriptor.html#Method-Type-Descriptor" title="Method Type Descriptor">
|
||||
<link rel="next" href="Protections.html#Protections" title="Protections">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Member-Type-Descriptor"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Protections.html#Protections">Protections</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.8 The ‘<samp><span class="samp">@</span></samp>’ Type Descriptor</h3>
|
||||
|
||||
<p>The ‘<samp><span class="samp">@</span></samp>’ type descriptor is used for a
|
||||
pointer-to-non-static-member-data type. It is followed
|
||||
by type information for the class (or union), a comma, and type
|
||||
information for the member data.
|
||||
|
||||
<p>The following C<tt>++</tt> source:
|
||||
|
||||
<pre class="smallexample"> typedef int A::*int_in_a;
|
||||
</pre>
|
||||
<p>generates the following stab:
|
||||
|
||||
<pre class="smallexample"> .stabs "int_in_a:t20=21=@19,1",128,0,0,0
|
||||
</pre>
|
||||
<p>Note that there is a conflict between this and type attributes
|
||||
(see <a href="String-Field.html#String-Field">String Field</a>); both use type descriptor ‘<samp><span class="samp">@</span></samp>’.
|
||||
Fortunately, the ‘<samp><span class="samp">@</span></samp>’ type descriptor used in this C<tt>++</tt> sense always
|
||||
will be followed by a digit, ‘<samp><span class="samp">(</span></samp>’, or ‘<samp><span class="samp">-</span></samp>’, and type attributes
|
||||
never start with those things.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Method Modifiers - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Protections.html#Protections" title="Protections">
|
||||
<link rel="next" href="Virtual-Methods.html#Virtual-Methods" title="Virtual Methods">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Method-Modifiers"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Virtual-Methods.html#Virtual-Methods">Virtual Methods</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Protections.html#Protections">Protections</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.10 Method Modifiers (<code>const</code>, <code>volatile</code>, <code>const volatile</code>)</h3>
|
||||
|
||||
<p><< based on a6.C >>
|
||||
|
||||
<p>In the class example described above all the methods have the normal
|
||||
modifier. This method modifier information is located just after the
|
||||
protection information for the method. This field has four possible
|
||||
character values. Normal methods use ‘<samp><span class="samp">A</span></samp>’, const methods use
|
||||
‘<samp><span class="samp">B</span></samp>’, volatile methods use ‘<samp><span class="samp">C</span></samp>’, and const volatile methods use
|
||||
‘<samp><span class="samp">D</span></samp>’. Consider the class definition below:
|
||||
|
||||
<pre class="example"> class A {
|
||||
public:
|
||||
int ConstMeth (int arg) const { return arg; };
|
||||
char VolatileMeth (char arg) volatile { return arg; };
|
||||
float ConstVolMeth (float arg) const volatile {return arg; };
|
||||
};
|
||||
</pre>
|
||||
<p>This class is described by the following stab:
|
||||
|
||||
<pre class="display"> .stabs "class(A):sym_desc(struct)type_def(20)=type_desc(struct)struct_bytes(1)
|
||||
meth_name(ConstMeth)::type_def(21)sym_desc(method)
|
||||
returning(int);:arg(int);protection(public)modifier(const)virtual(no);
|
||||
meth_name(VolatileMeth)::type_def(22)=sym_desc(method)
|
||||
returning(char);:arg(char);protection(public)modifier(volatile)virt(no)
|
||||
meth_name(ConstVolMeth)::type_def(23)=sym_desc(method)
|
||||
returning(float);:arg(float);protection(public)modifier(const volatile)
|
||||
virtual(no);;", <small class="dots">...</small>
|
||||
</pre>
|
||||
<pre class="example"> .stabs "A:T20=s1ConstMeth::21=##1;:i;2B.;VolatileMeth::22=##2;:c;2C.;
|
||||
ConstVolMeth::23=##12;:f;2D.;;",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Method Type Descriptor - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Methods.html#Methods" title="Methods">
|
||||
<link rel="next" href="Member-Type-Descriptor.html#Member-Type-Descriptor" title="Member Type Descriptor">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Method-Type-Descriptor"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Member-Type-Descriptor.html#Member-Type-Descriptor">Member Type Descriptor</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Methods.html#Methods">Methods</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.7 The ‘<samp><span class="samp">#</span></samp>’ Type Descriptor</h3>
|
||||
|
||||
<p>This is used to describe a class method. This is a function which takes
|
||||
an extra argument as its first argument, for the <code>this</code> pointer.
|
||||
|
||||
<p>If the ‘<samp><span class="samp">#</span></samp>’ is immediately followed by another ‘<samp><span class="samp">#</span></samp>’, the second
|
||||
one will be followed by the return type and a semicolon. The class and
|
||||
argument types are not specified, and must be determined by demangling
|
||||
the name of the method if it is available.
|
||||
|
||||
<p>Otherwise, the single ‘<samp><span class="samp">#</span></samp>’ is followed by the class type, a comma,
|
||||
the return type, a comma, and zero or more parameter types separated by
|
||||
commas. The list of arguments is terminated by a semicolon. In the
|
||||
debugging output generated by gcc, a final argument type of <code>void</code>
|
||||
indicates a method which does not take a variable number of arguments.
|
||||
If the final argument type of <code>void</code> does not appear, the method
|
||||
was declared with an ellipsis.
|
||||
|
||||
<p>Note that although such a type will normally be used to describe fields
|
||||
in structures, unions, or classes, for at least some versions of the
|
||||
compiler it can also be used in other contexts.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Methods - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Class-Instance.html#Class-Instance" title="Class Instance">
|
||||
<link rel="next" href="Method-Type-Descriptor.html#Method-Type-Descriptor" title="Method Type Descriptor">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Methods"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Class-Instance.html#Class-Instance">Class Instance</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.6 Method Definition</h3>
|
||||
|
||||
<p>The class definition shown above declares Ameth. The C<tt>++</tt> source below
|
||||
defines Ameth:
|
||||
|
||||
<pre class="example"> int
|
||||
baseA::Ameth(int in, char other)
|
||||
{
|
||||
return in;
|
||||
};
|
||||
</pre>
|
||||
<p>This method definition yields three stabs following the code of the
|
||||
method. One stab describes the method itself and following two describe
|
||||
its parameters. Although there is only one formal argument all methods
|
||||
have an implicit argument which is the <code>this</code> pointer. The <code>this</code>
|
||||
pointer is a pointer to the object on which the method was called. Note
|
||||
that the method name is mangled to encode the class name and argument
|
||||
types. Name mangling is described in the <span class="sc">arm</span> (<cite>The Annotated
|
||||
C++ Reference Manual</cite>, by Ellis and Stroustrup, <span class="sc">isbn</span>
|
||||
0-201-51459-1); <samp><span class="file">gpcompare.texi</span></samp> in Cygnus GCC distributions
|
||||
describes the differences between GNU mangling and <span class="sc">arm</span>
|
||||
mangling.
|
||||
<!-- FIXME: Use @xref, especially if this is generally installed in the -->
|
||||
<!-- info tree. -->
|
||||
<!-- FIXME: This information should be in a net release, either of GCC or -->
|
||||
<!-- GDB. But gpcompare.texi doesn't seem to be in the FSF GCC. -->
|
||||
|
||||
<pre class="example"> .stabs "name:symbol_descriptor(global function)return_type(int)",
|
||||
N_FUN, NIL, NIL, code_addr_of_method_start
|
||||
|
||||
.stabs "Ameth__5baseAic:F1",36,0,0,_Ameth__5baseAic
|
||||
</pre>
|
||||
<p>Here is the stab for the <code>this</code> pointer implicit argument. The
|
||||
name of the <code>this</code> pointer is always <code>this</code>. Type 19, the
|
||||
<code>this</code> pointer is defined as a pointer to type 20, <code>baseA</code>,
|
||||
but a stab defining <code>baseA</code> has not yet been emitted. Since the
|
||||
compiler knows it will be emitted shortly, here it just outputs a cross
|
||||
reference to the undefined symbol, by prefixing the symbol name with
|
||||
‘<samp><span class="samp">xs</span></samp>’.
|
||||
|
||||
<pre class="example"> .stabs "name:sym_desc(register param)type_def(19)=
|
||||
type_desc(ptr to)type_ref(baseA)=
|
||||
type_desc(cross-reference to)baseA:",N_RSYM,NIL,NIL,register_number
|
||||
|
||||
.stabs "this:P19=*20=xsbaseA:",64,0,0,8
|
||||
</pre>
|
||||
<p>The stab for the explicit integer argument looks just like a parameter
|
||||
to a C function. The last field of the stab is the offset from the
|
||||
argument pointer, which in most systems is the same as the frame
|
||||
pointer.
|
||||
|
||||
<pre class="example"> .stabs "name:sym_desc(value parameter)type_ref(int)",
|
||||
N_PSYM,NIL,NIL,offset_from_arg_ptr
|
||||
|
||||
.stabs "in:p1",160,0,0,72
|
||||
</pre>
|
||||
<p><< The examples that follow are based on A1.C >>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Miscellaneous Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Builtin-Types.html#Builtin-Types" title="Builtin Types">
|
||||
<link rel="next" href="Cross_002dReferences.html#Cross_002dReferences" title="Cross-References">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Miscellaneous-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Builtin-Types.html#Builtin-Types">Builtin Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.2 Miscellaneous Types</h3>
|
||||
|
||||
<dl>
|
||||
<dt><code>b </code><var>type-information</var><code> ; </code><var>bytes</var><dd>Pascal space type. This is documented by IBM; what does it mean?
|
||||
|
||||
<p>This use of the ‘<samp><span class="samp">b</span></samp>’ type descriptor can be distinguished
|
||||
from its use for builtin integral types (see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>) because the character following the type descriptor is
|
||||
always a digit, ‘<samp><span class="samp">(</span></samp>’, or ‘<samp><span class="samp">-</span></samp>’.
|
||||
|
||||
<br><dt><code>B </code><var>type-information</var><dd>A volatile-qualified version of <var>type-information</var>. This is
|
||||
a Sun extension. References and stores to a variable with a
|
||||
volatile-qualified type must not be optimized or cached; they
|
||||
must occur as the user specifies them.
|
||||
|
||||
<br><dt><code>d </code><var>type-information</var><dd>File of type <var>type-information</var>. As far as I know this is only used
|
||||
by Pascal.
|
||||
|
||||
<br><dt><code>k </code><var>type-information</var><dd>A const-qualified version of <var>type-information</var>. This is a Sun
|
||||
extension. A variable with a const-qualified type cannot be modified.
|
||||
|
||||
<br><dt><code>M </code><var>type-information</var><code> ; </code><var>length</var><dd>Multiple instance type. The type seems to composed of <var>length</var>
|
||||
repetitions of <var>type-information</var>, for example <code>character*3</code> is
|
||||
represented by ‘<samp><span class="samp">M-2;3</span></samp>’, where ‘<samp><span class="samp">-2</span></samp>’ is a reference to a
|
||||
character type (see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>). I'm not sure how this
|
||||
differs from an array. This appears to be a Fortran feature.
|
||||
<var>length</var> is a bound, like those in range types; see <a href="Subranges.html#Subranges">Subranges</a>.
|
||||
|
||||
<br><dt><code>S </code><var>type-information</var><dd>Pascal set type. <var>type-information</var> must be a small type such as an
|
||||
enumeration or a subrange, and the type is a bitmask whose length is
|
||||
specified by the number of elements in <var>type-information</var>.
|
||||
|
||||
<p>In CHILL, if it is a bitstring instead of a set, also use the ‘<samp><span class="samp">S</span></samp>’
|
||||
type attribute (see <a href="String-Field.html#String-Field">String Field</a>).
|
||||
|
||||
<br><dt><code>* </code><var>type-information</var><dd>Pointer to <var>type-information</var>.
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_BROWS - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fM2C.html#N_005fM2C" title="N_M2C">
|
||||
<link rel="next" href="N_005fDEFD.html#N_005fDEFD" title="N_DEFD">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_BROWS"></a>
|
||||
<a name="N_005fBROWS"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fM2C.html#N_005fM2C">N_M2C</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.5 N_BROWS</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabs</code>: <b>N_BROWS</b><var><a name="index-N_005fBROWS-61"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fBROWS-62"></a>Sun source code browser, path to <samp><span class="file">.cb</span></samp> file
|
||||
|
||||
<p><<?>>
|
||||
"path to associated <samp><span class="file">.cb</span></samp> file"
|
||||
|
||||
<p>Note: N_BROWS has the same value as N_BSLINE.
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_CATCH - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fMOD2.html#N_005fMOD2" title="N_MOD2">
|
||||
<link rel="next" href="N_005fSSYM.html#N_005fSSYM" title="N_SSYM">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_CATCH"></a>
|
||||
<a name="N_005fCATCH"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.9 N_CATCH</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabn</code>: <b>N_CATCH</b><var><a name="index-N_005fCATCH-69"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fCATCH-70"></a>GNU C<tt>++</tt> <code>catch</code> clause
|
||||
|
||||
<p>GNU C<tt>++</tt> <code>catch</code> clause. The value is its address. The desc field
|
||||
is nonzero if this entry is immediately followed by a <code>CAUGHT</code> stab
|
||||
saying what exception was caught. Multiple <code>CAUGHT</code> stabs means
|
||||
that multiple exceptions can be caught here. If desc is 0, it means all
|
||||
exceptions are caught here.
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_DEFD - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fBROWS.html#N_005fBROWS" title="N_BROWS">
|
||||
<link rel="next" href="N_005fEHDECL.html#N_005fEHDECL" title="N_EHDECL">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_DEFD"></a>
|
||||
<a name="N_005fDEFD"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.6 N_DEFD</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabn</code>: <b>N_DEFD</b><var><a name="index-N_005fDEFD-63"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fDEFD-64"></a>GNU Modula2 definition module dependency.
|
||||
|
||||
<p>GNU Modula-2 definition module dependency. The value is the
|
||||
modification time of the definition file. The other field is non-zero
|
||||
if it is imported with the GNU M2 keyword <code>%INITIALIZE</code>. Perhaps
|
||||
<code>N_M2C</code> can be used if there are enough empty fields?
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_EHDECL - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fDEFD.html#N_005fDEFD" title="N_DEFD">
|
||||
<link rel="next" href="N_005fMOD2.html#N_005fMOD2" title="N_MOD2">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_EHDECL"></a>
|
||||
<a name="N_005fEHDECL"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.7 N_EHDECL</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabs</code>: <b>N_EHDECL</b><var><a name="index-N_005fEHDECL-65"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fEHDECL-66"></a>GNU C<tt>++</tt> exception variable <<?>>.
|
||||
|
||||
<p>"<var>string</var> is variable name"
|
||||
|
||||
<p>Note: conflicts with <code>N_MOD2</code>.
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_LENG - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="Gould.html#Gould" title="Gould">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_LENG"></a>
|
||||
<a name="N_005fLENG"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Gould.html#Gould">Gould</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.13 N_LENG</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabn</code>: <b>N_LENG</b><var><a name="index-N_005fLENG-85"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fLENG-86"></a>Second symbol entry containing a length-value for the preceding entry.
|
||||
The value is the length.
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_M2C - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fNOMAP.html#N_005fNOMAP" title="N_NOMAP">
|
||||
<link rel="next" href="N_005fBROWS.html#N_005fBROWS" title="N_BROWS">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_M2C"></a>
|
||||
<a name="N_005fM2C"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.4 N_M2C</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabs</code>: <b>N_M2C</b><var><a name="index-N_005fM2C-59"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fM2C-60"></a>Modula-2 compilation unit.
|
||||
|
||||
<pre class="example"> "string" -> "unit_name,unit_time_stamp[,code_time_stamp]"
|
||||
desc -> unit_number
|
||||
value -> 0 (main unit)
|
||||
1 (any other unit)
|
||||
</pre>
|
||||
<p>See <cite>Dbx and Dbxtool Interfaces</cite>, 2nd edition, by Sun, 1988, for
|
||||
more information.
|
||||
|
||||
</blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_MOD2 - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fEHDECL.html#N_005fEHDECL" title="N_EHDECL">
|
||||
<link rel="next" href="N_005fCATCH.html#N_005fCATCH" title="N_CATCH">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_MOD2"></a>
|
||||
<a name="N_005fMOD2"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.8 N_MOD2</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stab?</code>: <b>N_MOD2</b><var><a name="index-N_005fMOD2-67"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fMOD2-68"></a>Modula2 info "for imc" (according to Ultrix V4.0)
|
||||
|
||||
<p>Note: conflicts with <code>N_EHDECL</code> <<?>>
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_NOMAP - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fNSYMS.html#N_005fNSYMS" title="N_NSYMS">
|
||||
<link rel="next" href="N_005fM2C.html#N_005fM2C" title="N_M2C">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_NOMAP"></a>
|
||||
<a name="N_005fNOMAP"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fM2C.html#N_005fM2C">N_M2C</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.3 N_NOMAP</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabs</code>: <b>N_NOMAP</b><var><a name="index-N_005fNOMAP-57"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fNOMAP-58"></a>No DST map for symbol (according to Ultrix V4.0). I think this means a
|
||||
variable has been optimized out.
|
||||
|
||||
<pre class="display"> name, ,0,type,ignored (stab.def)
|
||||
</pre>
|
||||
</blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_NSYMS - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fPC.html#N_005fPC" title="N_PC">
|
||||
<link rel="next" href="N_005fNOMAP.html#N_005fNOMAP" title="N_NOMAP">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_NSYMS"></a>
|
||||
<a name="N_005fNSYMS"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fPC.html#N_005fPC">N_PC</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.2 N_NSYMS</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabn</code>: <b>N_NSYMS</b><var><a name="index-N_005fNSYMS-55"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fNSYMS-56"></a>Number of symbols (according to Ultrix V4.0).
|
||||
|
||||
<pre class="display"> 0, files,,funcs,lines (stab.def)
|
||||
</pre>
|
||||
</blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_PC - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="next" href="N_005fNSYMS.html#N_005fNSYMS" title="N_NSYMS">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_PC"></a>
|
||||
<a name="N_005fPC"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.1 N_PC</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabs</code>: <b>N_PC</b><var><a name="index-N_005fPC-53"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fPC-54"></a>Global symbol (for Pascal).
|
||||
|
||||
<pre class="example"> "name" -> "symbol_name" <<?>>
|
||||
value -> supposedly the line number (stab.def is skeptical)
|
||||
</pre>
|
||||
<pre class="display"> <samp><span class="file">stabdump.c</span></samp> says:
|
||||
|
||||
global pascal symbol: name,,0,subtype,line
|
||||
<< subtype? >>
|
||||
</pre>
|
||||
</blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_SCOPE - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fSSYM.html#N_005fSSYM" title="N_SSYM">
|
||||
<link rel="next" href="Gould.html#Gould" title="Gould">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_SCOPE"></a>
|
||||
<a name="N_005fSCOPE"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Gould.html#Gould">Gould</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.11 N_SCOPE</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stab?</code>: <b>N_SCOPE</b><var><a name="index-N_005fSCOPE-73"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fSCOPE-74"></a>Modula2 scope information (Sun linker)
|
||||
<<?>>
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>N_SSYM - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="prev" href="N_005fCATCH.html#N_005fCATCH" title="N_CATCH">
|
||||
<link rel="next" href="N_005fSCOPE.html#N_005fSCOPE" title="N_SCOPE">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="N_SSYM"></a>
|
||||
<a name="N_005fSSYM"></a>
|
||||
Next: <a rel="next" accesskey="n" href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">D.10 N_SSYM</h3>
|
||||
|
||||
<div class="defun">
|
||||
— <code>.stabn</code>: <b>N_SSYM</b><var><a name="index-N_005fSSYM-71"></a></var><br>
|
||||
<blockquote><p><a name="index-N_005fSSYM-72"></a>Structure or union element.
|
||||
|
||||
<p>The value is the offset in the structure.
|
||||
|
||||
<p><<?looking at structs and unions in C I didn't see these>>
|
||||
</p></blockquote></div>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Negative Type Numbers - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Builtin-Types.html#Builtin-Types" title="Builtin Types">
|
||||
<link rel="prev" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" title="Builtin Type Descriptors">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Negative-Type-Numbers"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Builtin-Types.html#Builtin-Types">Builtin Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">5.1.3 Negative Type Numbers</h4>
|
||||
|
||||
<p>This is the method used in XCOFF for defining builtin types.
|
||||
Since the debugger knows about the builtin types anyway, the idea of
|
||||
negative type numbers is simply to give a special type number which
|
||||
indicates the builtin type. There is no stab defining these types.
|
||||
|
||||
<p>There are several subtle issues with negative type numbers.
|
||||
|
||||
<p>One is the size of the type. A builtin type (for example the C types
|
||||
<code>int</code> or <code>long</code>) might have different sizes depending on
|
||||
compiler options, the target architecture, the ABI, etc. This issue
|
||||
doesn't come up for IBM tools since (so far) they just target the
|
||||
RS/6000; the sizes indicated below for each size are what the IBM
|
||||
RS/6000 tools use. To deal with differing sizes, either define separate
|
||||
negative type numbers for each size (which works but requires changing
|
||||
the debugger, and, unless you get both AIX dbx and GDB to accept the
|
||||
change, introduces an incompatibility), or use a type attribute
|
||||
(see <a href="String-Field.html#String-Field">String Field</a>) to define a new type with the appropriate size
|
||||
(which merely requires a debugger which understands type attributes,
|
||||
like AIX dbx or GDB). For example,
|
||||
|
||||
<pre class="example"> .stabs "boolean:t10=@s8;-16",128,0,0,0
|
||||
</pre>
|
||||
<p>defines an 8-bit boolean type, and
|
||||
|
||||
<pre class="example"> .stabs "boolean:t10=@s64;-16",128,0,0,0
|
||||
</pre>
|
||||
<p>defines a 64-bit boolean type.
|
||||
|
||||
<p>A similar issue is the format of the type. This comes up most often for
|
||||
floating-point types, which could have various formats (particularly
|
||||
extended doubles, which vary quite a bit even among IEEE systems).
|
||||
Again, it is best to define a new negative type number for each
|
||||
different format; changing the format based on the target system has
|
||||
various problems. One such problem is that the Alpha has both VAX and
|
||||
IEEE floating types. One can easily imagine one library using the VAX
|
||||
types and another library in the same executable using the IEEE types.
|
||||
Another example is that the interpretation of whether a boolean is true
|
||||
or false can be based on the least significant bit, most significant
|
||||
bit, whether it is zero, etc., and different compilers (or different
|
||||
options to the same compiler) might provide different kinds of boolean.
|
||||
|
||||
<p>The last major issue is the names of the types. The name of a given
|
||||
type depends <em>only</em> on the negative type number given; these do not
|
||||
vary depending on the language, the target system, or anything else.
|
||||
One can always define separate type numbers—in the following list you
|
||||
will see for example separate <code>int</code> and <code>integer*4</code> types
|
||||
which are identical except for the name. But compatibility can be
|
||||
maintained by not inventing new negative type numbers and instead just
|
||||
defining a new type with a new name. For example:
|
||||
|
||||
<pre class="example"> .stabs "CARDINAL:t10=-8",128,0,0,0
|
||||
</pre>
|
||||
<p>Here is the list of negative type numbers. The phrase <dfn>integral
|
||||
type</dfn> is used to mean twos-complement (I strongly suspect that all
|
||||
machines which use stabs use twos-complement; most machines use
|
||||
twos-complement these days).
|
||||
|
||||
<dl>
|
||||
<dt><code>-1</code><dd><code>int</code>, 32 bit signed integral type.
|
||||
|
||||
<br><dt><code>-2</code><dd><code>char</code>, 8 bit type holding a character. Both GDB and dbx on AIX
|
||||
treat this as signed. GCC uses this type whether <code>char</code> is signed
|
||||
or not, which seems like a bad idea. The AIX compiler (<code>xlc</code>) seems to
|
||||
avoid this type; it uses -5 instead for <code>char</code>.
|
||||
|
||||
<br><dt><code>-3</code><dd><code>short</code>, 16 bit signed integral type.
|
||||
|
||||
<br><dt><code>-4</code><dd><code>long</code>, 32 bit signed integral type.
|
||||
|
||||
<br><dt><code>-5</code><dd><code>unsigned char</code>, 8 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-6</code><dd><code>signed char</code>, 8 bit signed integral type.
|
||||
|
||||
<br><dt><code>-7</code><dd><code>unsigned short</code>, 16 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-8</code><dd><code>unsigned int</code>, 32 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-9</code><dd><code>unsigned</code>, 32 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-10</code><dd><code>unsigned long</code>, 32 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-11</code><dd><code>void</code>, type indicating the lack of a value.
|
||||
|
||||
<br><dt><code>-12</code><dd><code>float</code>, IEEE single precision.
|
||||
|
||||
<br><dt><code>-13</code><dd><code>double</code>, IEEE double precision.
|
||||
|
||||
<br><dt><code>-14</code><dd><code>long double</code>, IEEE double precision. The compiler claims the size
|
||||
will increase in a future release, and for binary compatibility you have
|
||||
to avoid using <code>long double</code>. I hope when they increase it they
|
||||
use a new negative type number.
|
||||
|
||||
<br><dt><code>-15</code><dd><code>integer</code>. 32 bit signed integral type.
|
||||
|
||||
<br><dt><code>-16</code><dd><code>boolean</code>. 32 bit type. GDB and GCC assume that zero is false,
|
||||
one is true, and other values have unspecified meaning. I hope this
|
||||
agrees with how the IBM tools use the type.
|
||||
|
||||
<br><dt><code>-17</code><dd><code>short real</code>. IEEE single precision.
|
||||
|
||||
<br><dt><code>-18</code><dd><code>real</code>. IEEE double precision.
|
||||
|
||||
<br><dt><code>-19</code><dd><code>stringptr</code>. See <a href="Strings.html#Strings">Strings</a>.
|
||||
|
||||
<br><dt><code>-20</code><dd><code>character</code>, 8 bit unsigned character type.
|
||||
|
||||
<br><dt><code>-21</code><dd><code>logical*1</code>, 8 bit type. This Fortran type has a split
|
||||
personality in that it is used for boolean variables, but can also be
|
||||
used for unsigned integers. 0 is false, 1 is true, and other values are
|
||||
non-boolean.
|
||||
|
||||
<br><dt><code>-22</code><dd><code>logical*2</code>, 16 bit type. This Fortran type has a split
|
||||
personality in that it is used for boolean variables, but can also be
|
||||
used for unsigned integers. 0 is false, 1 is true, and other values are
|
||||
non-boolean.
|
||||
|
||||
<br><dt><code>-23</code><dd><code>logical*4</code>, 32 bit type. This Fortran type has a split
|
||||
personality in that it is used for boolean variables, but can also be
|
||||
used for unsigned integers. 0 is false, 1 is true, and other values are
|
||||
non-boolean.
|
||||
|
||||
<br><dt><code>-24</code><dd><code>logical</code>, 32 bit type. This Fortran type has a split
|
||||
personality in that it is used for boolean variables, but can also be
|
||||
used for unsigned integers. 0 is false, 1 is true, and other values are
|
||||
non-boolean.
|
||||
|
||||
<br><dt><code>-25</code><dd><code>complex</code>. A complex type consisting of two IEEE single-precision
|
||||
floating point values.
|
||||
|
||||
<br><dt><code>-26</code><dd><code>complex</code>. A complex type consisting of two IEEE double-precision
|
||||
floating point values.
|
||||
|
||||
<br><dt><code>-27</code><dd><code>integer*1</code>, 8 bit signed integral type.
|
||||
|
||||
<br><dt><code>-28</code><dd><code>integer*2</code>, 16 bit signed integral type.
|
||||
|
||||
<br><dt><code>-29</code><dd><code>integer*4</code>, 32 bit signed integral type.
|
||||
|
||||
<br><dt><code>-30</code><dd><code>wchar</code>. Wide character, 16 bits wide, unsigned (what format?
|
||||
Unicode?).
|
||||
|
||||
<br><dt><code>-31</code><dd><code>long long</code>, 64 bit signed integral type.
|
||||
|
||||
<br><dt><code>-32</code><dd><code>unsigned long long</code>, 64 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-33</code><dd><code>logical*8</code>, 64 bit unsigned integral type.
|
||||
|
||||
<br><dt><code>-34</code><dd><code>integer*8</code>, 64 bit signed integral type.
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Nested Procedures - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Procedures.html#Procedures" title="Procedures">
|
||||
<link rel="next" href="Block-Structure.html#Block-Structure" title="Block Structure">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Nested-Procedures"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Block-Structure.html#Block-Structure">Block Structure</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Procedures.html#Procedures">Procedures</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.6 Nested Procedures</h3>
|
||||
|
||||
<p>For any of the symbol descriptors representing procedures, after the
|
||||
symbol descriptor and the type information is optionally a scope
|
||||
specifier. This consists of a comma, the name of the procedure, another
|
||||
comma, and the name of the enclosing procedure. The first name is local
|
||||
to the scope specified, and seems to be redundant with the name of the
|
||||
symbol (before the ‘<samp><span class="samp">:</span></samp>’). This feature is used by GCC, and
|
||||
presumably Pascal, Modula-2, etc., compilers, for nested functions.
|
||||
|
||||
<p>If procedures are nested more than one level deep, only the immediately
|
||||
containing scope is specified. For example, this code:
|
||||
|
||||
<pre class="example"> int
|
||||
foo (int x)
|
||||
{
|
||||
int bar (int y)
|
||||
{
|
||||
int baz (int z)
|
||||
{
|
||||
return x + y + z;
|
||||
}
|
||||
return baz (x + 2 * y);
|
||||
}
|
||||
return x + bar (3 * x);
|
||||
}
|
||||
</pre>
|
||||
<p class="noindent">produces the stabs:
|
||||
|
||||
<pre class="example"> .stabs "baz:f1,baz,bar",36,0,0,_baz.15 # <span class="roman">36 is N_FUN</span>
|
||||
.stabs "bar:f1,bar,foo",36,0,0,_bar.12
|
||||
.stabs "foo:F1",36,0,0,_foo
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Nested Symbols - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Class-Names.html#Class-Names" title="Class Names">
|
||||
<link rel="next" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" title="Basic Cplusplus Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Nested-Symbols"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types">Basic Cplusplus Types</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Class-Names.html#Class-Names">Class Names</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.2 Defining a Symbol Within Another Type</h3>
|
||||
|
||||
<p>In C<tt>++</tt>, a symbol (such as a type name) can be defined within another type.
|
||||
<!-- FIXME: Needs example. -->
|
||||
|
||||
<p>In stabs, this is sometimes represented by making the name of a symbol
|
||||
which contains ‘<samp><span class="samp">::</span></samp>’. Such a pair of colons does not end the name
|
||||
of the symbol, the way a single colon would (see <a href="String-Field.html#String-Field">String Field</a>). I'm
|
||||
not sure how consistently used or well thought out this mechanism is.
|
||||
So that a pair of colons in this position always has this meaning,
|
||||
‘<samp><span class="samp">:</span></samp>’ cannot be used as a symbol descriptor.
|
||||
|
||||
<p>For example, if the string for a stab is ‘<samp><span class="samp">foo::bar::baz:t5=*6</span></samp>’,
|
||||
then <code>foo::bar::baz</code> is the name of the symbol, ‘<samp><span class="samp">t</span></samp>’ is the
|
||||
symbol descriptor, and ‘<samp><span class="samp">5=*6</span></samp>’ is the type information.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Non-Stab Symbol Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Stab-Types.html#Stab-Types" title="Stab Types">
|
||||
<link rel="next" href="Stab-Symbol-Types.html#Stab-Symbol-Types" title="Stab Symbol Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Non-Stab-Symbol-Types"></a>
|
||||
<a name="Non_002dStab-Symbol-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Stab-Symbol-Types.html#Stab-Symbol-Types">Stab Symbol Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Stab-Types.html#Stab-Types">Stab Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="appendixsec">A.1 Non-Stab Symbol Types</h3>
|
||||
|
||||
<p>The following types are used by the linker and assembler, not by stab
|
||||
directives. Since this document does not attempt to describe aspects of
|
||||
object file format other than the debugging format, no details are
|
||||
given.
|
||||
|
||||
<!-- Try to get most of these to fit on a single line. -->
|
||||
<dl>
|
||||
<dt><code>0x0 N_UNDF</code><dd>Undefined symbol
|
||||
|
||||
<br><dt><code>0x2 N_ABS</code><dd>File scope absolute symbol
|
||||
|
||||
<br><dt><code>0x3 N_ABS | N_EXT</code><dd>External absolute symbol
|
||||
|
||||
<br><dt><code>0x4 N_TEXT</code><dd>File scope text symbol
|
||||
|
||||
<br><dt><code>0x5 N_TEXT | N_EXT</code><dd>External text symbol
|
||||
|
||||
<br><dt><code>0x6 N_DATA</code><dd>File scope data symbol
|
||||
|
||||
<br><dt><code>0x7 N_DATA | N_EXT</code><dd>External data symbol
|
||||
|
||||
<br><dt><code>0x8 N_BSS</code><dd>File scope BSS symbol
|
||||
|
||||
<br><dt><code>0x9 N_BSS | N_EXT</code><dd>External BSS symbol
|
||||
|
||||
<br><dt><code>0x0c N_FN_SEQ</code><dd>Same as <code>N_FN</code>, for Sequent compilers
|
||||
|
||||
<br><dt><code>0x0a N_INDR</code><dd>Symbol is indirected to another symbol
|
||||
|
||||
<br><dt><code>0x12 N_COMM</code><dd>Common—visible after shared library dynamic link
|
||||
|
||||
<br><dt><code>0x14 N_SETA</code><dt><code>0x15 N_SETA | N_EXT</code><dd>Absolute set element
|
||||
|
||||
<br><dt><code>0x16 N_SETT</code><dt><code>0x17 N_SETT | N_EXT</code><dd>Text segment set element
|
||||
|
||||
<br><dt><code>0x18 N_SETD</code><dt><code>0x19 N_SETD | N_EXT</code><dd>Data segment set element
|
||||
|
||||
<br><dt><code>0x1a N_SETB</code><dt><code>0x1b N_SETB | N_EXT</code><dd>BSS segment set element
|
||||
|
||||
<br><dt><code>0x1c N_SETV</code><dt><code>0x1d N_SETV | N_EXT</code><dd>Pointer to set vector
|
||||
|
||||
<br><dt><code>0x1e N_WARNING</code><dd>Print a warning message during linking
|
||||
|
||||
<br><dt><code>0x1f N_FN</code><dd>File name of a <samp><span class="file">.o</span></samp> file
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Overview - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="index.html#Top" title="Top">
|
||||
<link rel="next" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 class="settitle">STABS</h1>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Overview"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Program-Structure.html#Program-Structure">Program Structure</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">1 Overview of Stabs</h2>
|
||||
|
||||
<p><dfn>Stabs</dfn> refers to a format for information that describes a program
|
||||
to a debugger. This format was apparently invented by
|
||||
Peter Kessler at
|
||||
the University of California at Berkeley, for the <code>pdx</code> Pascal
|
||||
debugger; the format has spread widely since then.
|
||||
|
||||
<p>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
|
||||
lists of symbol descriptors (see <a href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>) and type
|
||||
descriptors (see <a href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>) are believed to be completely
|
||||
comprehensive. Stabs for COBOL-specific features and for variant
|
||||
records (used by Pascal and Modula-2) are poorly documented here.
|
||||
|
||||
<!-- FIXME: Need to document all OS9000 stuff in GDB; see all references -->
|
||||
<!-- to os9k_stabs in stabsread.c. -->
|
||||
<p>Other sources of information on stabs are <cite>Dbx and Dbxtool
|
||||
Interfaces</cite>, 2nd edition, by Sun, 1988, and <cite>AIX Version 3.2 Files
|
||||
Reference</cite>, Fourth Edition, September 1992, "dbx Stabstring Grammar" in
|
||||
the a.out section, page 2-31. This document is believed to incorporate
|
||||
the information from those two sources except where it explicitly directs
|
||||
you to them for more information.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Flow.html#Flow">Flow</a>: Overview of debugging information flow
|
||||
<li><a accesskey="2" href="Stabs-Format.html#Stabs-Format">Stabs Format</a>: Overview of stab format
|
||||
<li><a accesskey="3" href="String-Field.html#String-Field">String Field</a>: The string field
|
||||
<li><a accesskey="4" href="C-Example.html#C-Example">C Example</a>: A simple example in C source
|
||||
<li><a accesskey="5" href="Assembly-Code.html#Assembly-Code">Assembly Code</a>: The simple example at the assembly level
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Parameters - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Based-Variables.html#Based-Variables" title="Based Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Parameters"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Based-Variables.html#Based-Variables">Based Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.7 Parameters</h3>
|
||||
|
||||
<p>Formal parameters to a function are represented by a stab (or sometimes
|
||||
two; see below) for each parameter. The stabs are in the order in which
|
||||
the debugger should print the parameters (i.e., the order in which the
|
||||
parameters are declared in the source file). The exact form of the stab
|
||||
depends on how the parameter is being passed.
|
||||
|
||||
<p><a name="index-N_005fPSYM-44"></a><a name="index-C_005fPSYM-45"></a>Parameters passed on the stack use the symbol descriptor ‘<samp><span class="samp">p</span></samp>’ and
|
||||
the <code>N_PSYM</code> symbol type (or <code>C_PSYM</code> for XCOFF). The value
|
||||
of the symbol is an offset used to locate the parameter on the stack;
|
||||
its exact meaning is machine-dependent, but on most machines it is an
|
||||
offset from the frame pointer.
|
||||
|
||||
<p>As a simple example, the code:
|
||||
|
||||
<pre class="example"> main (argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
</pre>
|
||||
<p>produces the stabs:
|
||||
|
||||
<pre class="example"> .stabs "main:F1",36,0,0,_main # <span class="roman">36 is N_FUN</span>
|
||||
.stabs "argc:p1",160,0,0,68 # <span class="roman">160 is N_PSYM</span>
|
||||
.stabs "argv:p20=*21=*2",160,0,0,72
|
||||
</pre>
|
||||
<p>The type definition of <code>argv</code> is interesting because it contains
|
||||
several type definitions. Type 21 is pointer to type 2 (char) and
|
||||
<code>argv</code> (type 20) is pointer to type 21.
|
||||
|
||||
<!-- FIXME: figure out what these mean and describe them coherently. -->
|
||||
<p>The following symbol descriptors are also said to go with <code>N_PSYM</code>.
|
||||
The value of the symbol is said to be an offset from the argument
|
||||
pointer (I'm not sure whether this is true or not).
|
||||
|
||||
<pre class="example"> pP (<<??>>)
|
||||
pF Fortran function parameter
|
||||
X (function result variable)
|
||||
</pre>
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Register-Parameters.html#Register-Parameters">Register Parameters</a>
|
||||
<li><a accesskey="2" href="Local-Variable-Parameters.html#Local-Variable-Parameters">Local Variable Parameters</a>
|
||||
<li><a accesskey="3" href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>
|
||||
<li><a accesskey="4" href="Conformant-Arrays.html#Conformant-Arrays">Conformant Arrays</a>
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Procedures - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Line-Numbers.html#Line-Numbers" title="Line Numbers">
|
||||
<link rel="next" href="Nested-Procedures.html#Nested-Procedures" title="Nested Procedures">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Procedures"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Line-Numbers.html#Line-Numbers">Line Numbers</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.5 Procedures</h3>
|
||||
|
||||
<p><a name="index-N_005fFUN_002c-for-functions-13"></a><a name="index-N_005fFNAME-14"></a><a name="index-N_005fSTSYM_002c-for-functions-_0028Sun-acc_0029-15"></a><a name="index-N_005fGSYM_002c-for-functions-_0028Sun-acc_0029-16"></a>All of the following stabs normally use the <code>N_FUN</code> symbol type.
|
||||
However, Sun's <code>acc</code> compiler on SunOS4 uses <code>N_GSYM</code> and
|
||||
<code>N_STSYM</code>, which means that the value of the stab for the function
|
||||
is useless and the debugger must get the address of the function from
|
||||
the non-stab symbols instead. On systems where non-stab symbols have
|
||||
leading underscores, the stabs will lack underscores and the debugger
|
||||
needs to know about the leading underscore to match up the stab and the
|
||||
non-stab symbol. BSD Fortran is said to use <code>N_FNAME</code> with the
|
||||
same restriction; the value of the symbol is not useful (I'm not sure it
|
||||
really does use this, because GDB doesn't handle this and no one has
|
||||
complained).
|
||||
|
||||
<p><a name="index-C_005fFUN-17"></a>A function is represented by an ‘<samp><span class="samp">F</span></samp>’ symbol descriptor for a global
|
||||
(extern) function, and ‘<samp><span class="samp">f</span></samp>’ for a static (local) function. For
|
||||
a.out, the value of the symbol is the address of the start of the
|
||||
function; it is already relocated. For stabs in ELF, the SunPRO
|
||||
compiler version 2.0.1 and GCC put out an address which gets relocated
|
||||
by the linker. In a future release SunPRO is planning to put out zero,
|
||||
in which case the address can be found from the ELF (non-stab) symbol.
|
||||
Because looking things up in the ELF symbols would probably be slow, I'm
|
||||
not sure how to find which symbol of that name is the right one, and
|
||||
this doesn't provide any way to deal with nested functions, it would
|
||||
probably be better to make the value of the stab an address relative to
|
||||
the start of the file, or just absolute. See <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">ELF Linker Relocation</a> for more information on linker relocation of stabs in ELF
|
||||
files. For XCOFF, the stab uses the <code>C_FUN</code> storage class and the
|
||||
value of the stab is meaningless; the address of the function can be
|
||||
found from the csect symbol (XTY_LD/XMC_PR).
|
||||
|
||||
<p>The type information of the stab represents the return type of the
|
||||
function; thus ‘<samp><span class="samp">foo:f5</span></samp>’ means that foo is a function returning type
|
||||
5. There is no need to try to get the line number of the start of the
|
||||
function from the stab for the function; it is in the next
|
||||
<code>N_SLINE</code> symbol.
|
||||
|
||||
<!-- FIXME: verify whether the "I suspect" below is true or not. -->
|
||||
<p>Some compilers (such as Sun's Solaris compiler) support an extension for
|
||||
specifying the types of the arguments. I suspect this extension is not
|
||||
used for old (non-prototyped) function definitions in C. If the
|
||||
extension is in use, the type information of the stab for the function
|
||||
is followed by type information for each argument, with each argument
|
||||
preceded by ‘<samp><span class="samp">;</span></samp>’. An argument type of 0 means that additional
|
||||
arguments are being passed, whose types and number may vary (‘<samp><span class="samp">...</span></samp>’
|
||||
in ANSI C). GDB has tolerated this extension (parsed the syntax, if not
|
||||
necessarily used the information) since at least version 4.8; I don't
|
||||
know whether all versions of dbx tolerate it. The argument types given
|
||||
here are not redundant with the symbols for the formal parameters
|
||||
(see <a href="Parameters.html#Parameters">Parameters</a>); they are the types of the arguments as they are
|
||||
passed, before any conversions might take place. For example, if a C
|
||||
function which is declared without a prototype takes a <code>float</code>
|
||||
argument, the value is passed as a <code>double</code> but then converted to a
|
||||
<code>float</code>. Debuggers need to use the types given in the arguments
|
||||
when printing values, but when calling the function they need to use the
|
||||
types given in the symbol defining the function.
|
||||
|
||||
<p>If the return type and types of arguments of a function which is defined
|
||||
in another source file are specified (i.e., a function prototype in ANSI
|
||||
C), traditionally compilers emit no stab; the only way for the debugger
|
||||
to find the information is if the source file where the function is
|
||||
defined was also compiled with debugging symbols. As an extension the
|
||||
Solaris compiler uses symbol descriptor ‘<samp><span class="samp">P</span></samp>’ followed by the return
|
||||
type of the function, followed by the arguments, each preceded by
|
||||
‘<samp><span class="samp">;</span></samp>’, as in a stab with symbol descriptor ‘<samp><span class="samp">f</span></samp>’ or ‘<samp><span class="samp">F</span></samp>’.
|
||||
This use of symbol descriptor ‘<samp><span class="samp">P</span></samp>’ can be distinguished from its use
|
||||
for register parameters (see <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>) by the fact that it has
|
||||
symbol type <code>N_FUN</code>.
|
||||
|
||||
<p>The AIX documentation also defines symbol descriptor ‘<samp><span class="samp">J</span></samp>’ as an
|
||||
internal function. I assume this means a function nested within another
|
||||
function. It also says symbol descriptor ‘<samp><span class="samp">m</span></samp>’ is a module in
|
||||
Modula-2 or extended Pascal.
|
||||
|
||||
<p>Procedures (functions which do not return values) are represented as
|
||||
functions returning the <code>void</code> type in C. I don't see why this couldn't
|
||||
be used for all languages (inventing a <code>void</code> type for this purpose if
|
||||
necessary), but the AIX documentation defines ‘<samp><span class="samp">I</span></samp>’, ‘<samp><span class="samp">P</span></samp>’, and
|
||||
‘<samp><span class="samp">Q</span></samp>’ for internal, global, and static procedures, respectively.
|
||||
These symbol descriptors are unusual in that they are not followed by
|
||||
type information.
|
||||
|
||||
<p>The following example shows a stab for a function <code>main</code> which
|
||||
returns type number <code>1</code>. The <code>_main</code> specified for the value
|
||||
is a reference to an assembler label which is used to fill in the start
|
||||
address of the function.
|
||||
|
||||
<pre class="example"> .stabs "main:F1",36,0,0,_main # <span class="roman">36 is N_FUN</span>
|
||||
</pre>
|
||||
<p>The stab representing a procedure is located immediately following the
|
||||
code of the procedure. This stab is in turn directly followed by a
|
||||
group of other stabs describing elements of the procedure. These other
|
||||
stabs describe the procedure's parameters, its block local variables, and
|
||||
its block structure.
|
||||
|
||||
<p>If functions can appear in different sections, then the debugger may not
|
||||
be able to find the end of a function. Recent versions of GCC will mark
|
||||
the end of a function with an <code>N_FUN</code> symbol with an empty string
|
||||
for the name. The value is the address of the end of the current
|
||||
function. Without such a symbol, there is no indication of the address
|
||||
of the end of a function, and you must assume that it ended at the
|
||||
starting address of the next function or at the end of the text section
|
||||
for the program.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Program Structure - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="next" href="Constants.html#Constants" title="Constants">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Program-Structure"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Constants.html#Constants">Constants</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Overview.html#Overview">Overview</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">2 Encoding the Structure of the Program</h2>
|
||||
|
||||
<p>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
|
||||
line numbers, procedure names and types, and the beginnings and ends of
|
||||
blocks of code.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Main-Program.html#Main-Program">Main Program</a>: Indicate what the main program is
|
||||
<li><a accesskey="2" href="Source-Files.html#Source-Files">Source Files</a>: The path and name of the source file
|
||||
<li><a accesskey="3" href="Include-Files.html#Include-Files">Include Files</a>: Names of include files
|
||||
<li><a accesskey="4" href="Line-Numbers.html#Line-Numbers">Line Numbers</a>
|
||||
<li><a accesskey="5" href="Procedures.html#Procedures">Procedures</a>
|
||||
<li><a accesskey="6" href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>
|
||||
<li><a accesskey="7" href="Block-Structure.html#Block-Structure">Block Structure</a>
|
||||
<li><a accesskey="8" href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a>: Entering procedures except at the beginning.
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Protections - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Member-Type-Descriptor.html#Member-Type-Descriptor" title="Member Type Descriptor">
|
||||
<link rel="next" href="Method-Modifiers.html#Method-Modifiers" title="Method Modifiers">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Protections"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Method-Modifiers.html#Method-Modifiers">Method Modifiers</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Member-Type-Descriptor.html#Member-Type-Descriptor">Member Type Descriptor</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.9 Protections</h3>
|
||||
|
||||
<p>In the simple class definition shown above all member data and
|
||||
functions were publicly accessible. The example that follows
|
||||
contrasts public, protected and privately accessible fields and shows
|
||||
how these protections are encoded in C<tt>++</tt> stabs.
|
||||
|
||||
<p>If the character following the ‘<samp><var>field-name</var><span class="samp">:</span></samp>’ part of the
|
||||
string is ‘<samp><span class="samp">/</span></samp>’, then the next character is the visibility. ‘<samp><span class="samp">0</span></samp>’
|
||||
means private, ‘<samp><span class="samp">1</span></samp>’ means protected, and ‘<samp><span class="samp">2</span></samp>’ means public.
|
||||
Debuggers should ignore visibility characters they do not recognize, and
|
||||
assume a reasonable default (such as public) (GDB 4.11 does not, but
|
||||
this should be fixed in the next GDB release). If no visibility is
|
||||
specified the field is public. The visibility ‘<samp><span class="samp">9</span></samp>’ means that the
|
||||
field has been optimized out and is public (there is no way to specify
|
||||
an optimized out field with a private or protected visibility).
|
||||
Visibility ‘<samp><span class="samp">9</span></samp>’ is not supported by GDB 4.11; this should be fixed
|
||||
in the next GDB release.
|
||||
|
||||
<p>The following C<tt>++</tt> source:
|
||||
|
||||
<pre class="example"> class vis {
|
||||
private:
|
||||
int priv;
|
||||
protected:
|
||||
char prot;
|
||||
public:
|
||||
float pub;
|
||||
};
|
||||
</pre>
|
||||
<p class="noindent">generates the following stab:
|
||||
|
||||
<pre class="example"> # <span class="roman">128 is N_LSYM</span>
|
||||
.stabs "vis:T19=s12priv:/01,0,32;prot:/12,32,8;pub:12,64,32;;",128,0,0,0
|
||||
</pre>
|
||||
<p>‘<samp><span class="samp">vis:T19=s12</span></samp>’ indicates that type number 19 is a 12 byte structure
|
||||
named <code>vis</code> The <code>priv</code> field has public visibility
|
||||
(‘<samp><span class="samp">/0</span></samp>’), type int (‘<samp><span class="samp">1</span></samp>’), and offset and size ‘<samp><span class="samp">,0,32;</span></samp>’.
|
||||
The <code>prot</code> field has protected visibility (‘<samp><span class="samp">/1</span></samp>’), type char
|
||||
(‘<samp><span class="samp">2</span></samp>’) and offset and size ‘<samp><span class="samp">,32,8;</span></samp>’. The <code>pub</code> field has
|
||||
type float (‘<samp><span class="samp">12</span></samp>’), and offset and size ‘<samp><span class="samp">,64,32;</span></samp>’.
|
||||
|
||||
<p>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
|
||||
private, 1 if protected and 2 if public. Consider the C<tt>++</tt> class
|
||||
definition below:
|
||||
|
||||
<pre class="example"> class all_methods {
|
||||
private:
|
||||
int priv_meth(int in){return in;};
|
||||
protected:
|
||||
char protMeth(char in){return in;};
|
||||
public:
|
||||
float pubMeth(float in){return in;};
|
||||
};
|
||||
</pre>
|
||||
<p>It generates the following stab. The digit in question is to the left
|
||||
of an ‘<samp><span class="samp">A</span></samp>’ in each case. Notice also that in this case two symbol
|
||||
descriptors apply to the class name struct tag and struct type.
|
||||
|
||||
<pre class="display"> .stabs "class_name:sym_desc(struct tag&type)type_def(21)=
|
||||
sym_desc(struct)struct_bytes(1)
|
||||
meth_name::type_def(22)=sym_desc(method)returning(int);
|
||||
:args(int);protection(private)modifier(normal)virtual(no);
|
||||
meth_name::type_def(23)=sym_desc(method)returning(char);
|
||||
:args(char);protection(protected)modifier(normal)virtual(no);
|
||||
meth_name::type_def(24)=sym_desc(method)returning(float);
|
||||
:args(float);protection(public)modifier(normal)virtual(no);;",
|
||||
N_LSYM,NIL,NIL,NIL
|
||||
</pre>
|
||||
<pre class="smallexample"> .stabs "all_methods:Tt21=s1priv_meth::22=##1;:i;0A.;protMeth::23=##2;:c;1A.;
|
||||
pubMeth::24=##12;:f;2A.;;",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Questions - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link rel="next" href="Stab-Sections.html#Stab-Sections" title="Stab Sections">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Questions"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Stab-Sections.html#Stab-Sections">Stab Sections</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix E Questions and Anomalies</h2>
|
||||
|
||||
<ul>
|
||||
<li><!-- I think this is changed in GCC 2.4.5 to put the line number there. -->
|
||||
For GNU C stabs defining local and global variables (<code>N_LSYM</code> and
|
||||
<code>N_GSYM</code>), the desc field is supposed to contain the source
|
||||
line number on which the variable is defined. In reality the desc
|
||||
field is always 0. (This behavior is defined in <samp><span class="file">dbxout.c</span></samp> and
|
||||
putting a line number in desc is controlled by ‘<samp><span class="samp">#ifdef
|
||||
WINNING_GDB</span></samp>’, which defaults to false). GDB supposedly uses this
|
||||
information if you say ‘<samp><span class="samp">list </span><var>var</var></samp>’. In reality, <var>var</var> can
|
||||
be a variable defined in the program and GDB says ‘<samp><span class="samp">function
|
||||
</span><var>var</var><span class="samp"> not defined</span></samp>’.
|
||||
|
||||
<li>In GNU C stabs, there seems to be no way to differentiate tag types:
|
||||
structures, unions, and enums (symbol descriptor ‘<samp><span class="samp">T</span></samp>’) and typedefs
|
||||
(symbol descriptor ‘<samp><span class="samp">t</span></samp>’) defined at file scope from types defined locally
|
||||
to a procedure or other more local scope. They all use the <code>N_LSYM</code>
|
||||
stab type. Types defined at procedure scope are emitted after the
|
||||
<code>N_RBRAC</code> of the preceding function and before the code of the
|
||||
procedure in which they are defined. This is exactly the same as
|
||||
types defined in the source file between the two procedure bodies.
|
||||
GDB over-compensates by placing all types in block #1, the block for
|
||||
symbols of file scope. This is true for default, ‘<samp><span class="samp">-ansi</span></samp>’ and
|
||||
‘<samp><span class="samp">-traditional</span></samp>’ compiler options. (Bugs gcc/1063, gdb/1066.)
|
||||
|
||||
<li>What ends the procedure scope? Is it the proc block's <code>N_RBRAC</code> or the
|
||||
next <code>N_FUN</code>? (I believe its the first.)
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Reference Parameters - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Parameters.html#Parameters" title="Parameters">
|
||||
<link rel="prev" href="Local-Variable-Parameters.html#Local-Variable-Parameters" title="Local Variable Parameters">
|
||||
<link rel="next" href="Conformant-Arrays.html#Conformant-Arrays" title="Conformant Arrays">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Reference-Parameters"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Conformant-Arrays.html#Conformant-Arrays">Conformant Arrays</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Local-Variable-Parameters.html#Local-Variable-Parameters">Local Variable Parameters</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Parameters.html#Parameters">Parameters</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">4.7.3 Passing Parameters by Reference</h4>
|
||||
|
||||
<p>If the parameter is passed by reference (e.g., Pascal <code>VAR</code>
|
||||
parameters), then the symbol descriptor is ‘<samp><span class="samp">v</span></samp>’ if it is in the
|
||||
argument list, or ‘<samp><span class="samp">a</span></samp>’ if it in a register. Other than the fact
|
||||
that these contain the address of the parameter rather than the
|
||||
parameter itself, they are identical to ‘<samp><span class="samp">p</span></samp>’ and ‘<samp><span class="samp">R</span></samp>’,
|
||||
respectively. I believe ‘<samp><span class="samp">a</span></samp>’ is an AIX invention; ‘<samp><span class="samp">v</span></samp>’ is
|
||||
supported by all stabs-using systems as far as I know.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Register Parameters - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Parameters.html#Parameters" title="Parameters">
|
||||
<link rel="next" href="Local-Variable-Parameters.html#Local-Variable-Parameters" title="Local Variable Parameters">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Register-Parameters"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Local-Variable-Parameters.html#Local-Variable-Parameters">Local Variable Parameters</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Parameters.html#Parameters">Parameters</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">4.7.1 Passing Parameters in Registers</h4>
|
||||
|
||||
<p>If the parameter is passed in a register, then traditionally there are
|
||||
two symbols for each argument:
|
||||
|
||||
<pre class="example"> .stabs "arg:p1" . . . ; N_PSYM
|
||||
.stabs "arg:r1" . . . ; N_RSYM
|
||||
</pre>
|
||||
<p>Debuggers use the second one to find the value, and the first one to
|
||||
know that it is an argument.
|
||||
|
||||
<p><a name="index-C_005fRPSYM-46"></a><a name="index-N_005fRSYM_002c-for-parameters-47"></a>Because that approach is kind of ugly, some compilers use symbol
|
||||
descriptor ‘<samp><span class="samp">P</span></samp>’ or ‘<samp><span class="samp">R</span></samp>’ to indicate an argument which is in a
|
||||
register. Symbol type <code>C_RPSYM</code> is used in XCOFF and <code>N_RSYM</code>
|
||||
is used otherwise. The symbol's value is the register number. ‘<samp><span class="samp">P</span></samp>’
|
||||
and ‘<samp><span class="samp">R</span></samp>’ mean the same thing; the difference is that ‘<samp><span class="samp">P</span></samp>’ is a
|
||||
GNU invention and ‘<samp><span class="samp">R</span></samp>’ is an IBM (XCOFF) invention. As of version
|
||||
4.9, GDB should handle either one.
|
||||
|
||||
<p>There is at least one case where GCC uses a ‘<samp><span class="samp">p</span></samp>’ and ‘<samp><span class="samp">r</span></samp>’ pair
|
||||
rather than ‘<samp><span class="samp">P</span></samp>’; this is where the argument is passed in the
|
||||
argument list and then loaded into a register.
|
||||
|
||||
<p>According to the AIX documentation, symbol descriptor ‘<samp><span class="samp">D</span></samp>’ is for a
|
||||
parameter passed in a floating point register. This seems
|
||||
unnecessary—why not just use ‘<samp><span class="samp">R</span></samp>’ with a register number which
|
||||
indicates that it's a floating point register? I haven't verified
|
||||
whether the system actually does what the documentation indicates.
|
||||
|
||||
<!-- FIXME: On the hppa this is for any type > 8 bytes, I think, and not -->
|
||||
<!-- for small structures (investigate). -->
|
||||
<p>On the sparc and hppa, for a ‘<samp><span class="samp">P</span></samp>’ symbol whose type is a structure
|
||||
or union, the register contains the address of the structure. On the
|
||||
sparc, this is also true of a ‘<samp><span class="samp">p</span></samp>’ and ‘<samp><span class="samp">r</span></samp>’ pair (using Sun
|
||||
<code>cc</code>) or a ‘<samp><span class="samp">p</span></samp>’ symbol. However, if a (small) structure is
|
||||
really in a register, ‘<samp><span class="samp">r</span></samp>’ is used. And, to top it all off, on the
|
||||
hppa it might be a structure which was passed on the stack and loaded
|
||||
into a register and for which there is a ‘<samp><span class="samp">p</span></samp>’ and ‘<samp><span class="samp">r</span></samp>’ pair! I
|
||||
believe that symbol descriptor ‘<samp><span class="samp">i</span></samp>’ is supposed to deal with this
|
||||
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
|
||||
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
|
||||
differently than parameters passed by reference (see <a href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Register Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Global-Variables.html#Global-Variables" title="Global Variables">
|
||||
<link rel="next" href="Common-Blocks.html#Common-Blocks" title="Common Blocks">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Register-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Common-Blocks.html#Common-Blocks">Common Blocks</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Global-Variables.html#Global-Variables">Global Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.3 Register Variables</h3>
|
||||
|
||||
<p><a name="index-N_005fRSYM-29"></a><a name="index-C_005fRSYM-30"></a><!-- According to an old version of this manual, AIX uses C_RPSYM instead -->
|
||||
<!-- of C_RSYM. I am skeptical; this should be verified. -->
|
||||
Register variables have their own stab type, <code>N_RSYM</code>
|
||||
(<code>C_RSYM</code> for XCOFF), and their own symbol descriptor, ‘<samp><span class="samp">r</span></samp>’.
|
||||
The stab's value is the number of the register where the variable data
|
||||
will be stored.
|
||||
<!-- .stabs "name:type",N_RSYM,0,RegSize,RegNumber (Sun doc) -->
|
||||
|
||||
<p>AIX defines a separate symbol descriptor ‘<samp><span class="samp">d</span></samp>’ for floating point
|
||||
registers. This seems unnecessary; why not just just give floating
|
||||
point registers different register numbers? I have not verified whether
|
||||
the compiler actually uses ‘<samp><span class="samp">d</span></samp>’.
|
||||
|
||||
<p>If the register is explicitly allocated to a global variable, but not
|
||||
initialized, as in:
|
||||
|
||||
<pre class="example"> register int g_bar asm ("%g5");
|
||||
</pre>
|
||||
<p class="noindent">then the stab may be emitted at the end of the object file, with
|
||||
the other bss symbols.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Simple Classes - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" title="Basic Cplusplus Types">
|
||||
<link rel="next" href="Class-Instance.html#Class-Instance" title="Class Instance">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Simple-Classes"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Class-Instance.html#Class-Instance">Class Instance</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types">Basic Cplusplus Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.4 Simple Class Definition</h3>
|
||||
|
||||
<p>The stabs describing C<tt>++</tt> language features are an extension of the
|
||||
stabs describing C. Stabs representing C<tt>++</tt> class types elaborate
|
||||
extensively on the stab format used to describe structure types in C.
|
||||
Stabs representing class type variables look just like stabs
|
||||
representing C language variables.
|
||||
|
||||
<p>Consider the following very simple class definition.
|
||||
|
||||
<pre class="example"> class baseA {
|
||||
public:
|
||||
int Adat;
|
||||
int Ameth(int in, char other);
|
||||
};
|
||||
</pre>
|
||||
<p>The class <code>baseA</code> is represented by two stabs. The first stab describes
|
||||
the class as a structure type. The second stab describes a structure
|
||||
tag of the class type. Both stabs are of stab type <code>N_LSYM</code>. Since the
|
||||
stab is not located between an <code>N_FUN</code> and an <code>N_LBRAC</code> stab this indicates
|
||||
that the class is defined at file scope. If it were, then the <code>N_LSYM</code>
|
||||
would signify a local variable.
|
||||
|
||||
<p>A stab describing a C<tt>++</tt> class type is similar in format to a stab
|
||||
describing a C struct, with each class member shown as a field in the
|
||||
structure. The part of the struct format describing fields is
|
||||
expanded to include extra information relevant to C<tt>++</tt> class members.
|
||||
In addition, if the class has multiple base classes or virtual
|
||||
functions the struct format outside of the field parts is also
|
||||
augmented.
|
||||
|
||||
<p>In this simple example the field part of the C<tt>++</tt> class stab
|
||||
representing member data looks just like the field part of a C struct
|
||||
stab. The section on protections describes how its format is
|
||||
sometimes extended for member data.
|
||||
|
||||
<p>The field part of a C<tt>++</tt> class stab representing a member function
|
||||
differs substantially from the field part of a C struct stab. It
|
||||
still begins with ‘<samp><span class="samp">name:</span></samp>’ but then goes on to define a new type number
|
||||
for the member function, describe its return type, its argument types,
|
||||
its protection level, any qualifiers applied to the method definition,
|
||||
and whether the method is virtual or not. If the method is virtual
|
||||
then the method description goes on to give the vtable index of the
|
||||
method, and the type number of the first base class defining the
|
||||
method.
|
||||
|
||||
<p>When the field name is a method name it is followed by two colons rather
|
||||
than one. This is followed by a new type definition for the method.
|
||||
This is a number followed by an equal sign and the type of the method.
|
||||
Normally this will be a type declared using the ‘<samp><span class="samp">#</span></samp>’ type
|
||||
descriptor; see <a href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>; static member functions
|
||||
are declared using the ‘<samp><span class="samp">f</span></samp>’ type descriptor instead; see
|
||||
<a href="Function-Types.html#Function-Types">Function Types</a>.
|
||||
|
||||
<p>The format of an overloaded operator method name differs from that of
|
||||
other methods. It is ‘<samp><span class="samp">op$::</span><var>operator-name</var><span class="samp">.</span></samp>’ where
|
||||
<var>operator-name</var> is the operator name such as ‘<samp><span class="samp">+</span></samp>’ or ‘<samp><span class="samp">+=</span></samp>’.
|
||||
The name ends with a period, and any characters except the period can
|
||||
occur in the <var>operator-name</var> string.
|
||||
|
||||
<p>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
|
||||
the arguments are expressed in the same way argument types are expressed
|
||||
in C<tt>++</tt> name mangling. In this example an <code>int</code> and a <code>char</code>
|
||||
map to ‘<samp><span class="samp">ic</span></samp>’.
|
||||
|
||||
<p>This is followed by a number, a letter, and an asterisk or period,
|
||||
followed by another semicolon. The number indicates the protections
|
||||
that apply to the member function. Here the 2 means public. The
|
||||
letter encodes any qualifier applied to the method definition. In
|
||||
this case, ‘<samp><span class="samp">A</span></samp>’ means that it is a normal function definition. The dot
|
||||
shows that the method is not virtual. The sections that follow
|
||||
elaborate further on these fields and describe the additional
|
||||
information present for virtual methods.
|
||||
|
||||
<pre class="display"> .stabs "class_name:sym_desc(type)type_def(20)=type_desc(struct)struct_bytes(4)
|
||||
field_name(Adat):type(int),bit_offset(0),field_bits(32);
|
||||
|
||||
method_name(Ameth)::type_def(21)=type_desc(method)return_type(int);
|
||||
:arg_types(int char);
|
||||
protection(public)qualifier(normal)virtual(no);;"
|
||||
N_LSYM,NIL,NIL,NIL
|
||||
</pre>
|
||||
<pre class="smallexample"> .stabs "baseA:t20=s4Adat:1,0,32;Ameth::21=##1;:ic;2A.;;",128,0,0,0
|
||||
|
||||
.stabs "class_name:sym_desc(struct tag)",N_LSYM,NIL,NIL,NIL
|
||||
|
||||
.stabs "baseA:T20",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Source Files - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Program-Structure.html#Program-Structure" title="Program Structure">
|
||||
<link rel="prev" href="Main-Program.html#Main-Program" title="Main Program">
|
||||
<link rel="next" href="Include-Files.html#Include-Files" title="Include Files">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Source-Files"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Include-Files.html#Include-Files">Include Files</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Main-Program.html#Main-Program">Main Program</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Program-Structure.html#Program-Structure">Program Structure</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">2.2 Paths and Names of the Source Files</h3>
|
||||
|
||||
<p><a name="index-N_005fSO-2"></a>Before any other stabs occur, there must be a stab specifying the source
|
||||
file. This information is contained in a symbol of stab type
|
||||
<code>N_SO</code>; the string field contains the name of the file. The
|
||||
value of the symbol is the start address of the portion of the
|
||||
text section corresponding to that file.
|
||||
|
||||
<p>Some compilers use the desc field to indicate the language of the
|
||||
source file. Sun's compilers started this usage, and the first
|
||||
constants are derived from their documentation. Languages added
|
||||
by gcc/gdb start at 0x32 to avoid conflict with languages Sun may
|
||||
add in the future. A desc field with a value 0 indicates that no
|
||||
language has been specified via this mechanism.
|
||||
|
||||
<dl>
|
||||
<dt><code>N_SO_AS</code> (0x1)<dd>Assembly language
|
||||
<br><dt><code>N_SO_C</code> (0x2)<dd>K&R traditional C
|
||||
<br><dt><code>N_SO_ANSI_C</code> (0x3)<dd>ANSI C
|
||||
<br><dt><code>N_SO_CC</code> (0x4)<dd>C++
|
||||
<br><dt><code>N_SO_FORTRAN</code> (0x5)<dd>Fortran
|
||||
<br><dt><code>N_SO_PASCAL</code> (0x6)<dd>Pascal
|
||||
<br><dt><code>N_SO_FORTRAN90</code> (0x7)<dd>Fortran90
|
||||
<br><dt><code>N_SO_OBJC</code> (0x32)<dd>Objective-C
|
||||
<br><dt><code>N_SO_OBJCPLUS</code> (0x33)<dd>Objective-C++
|
||||
</dl>
|
||||
|
||||
<p>Some compilers (for example, GCC2 and SunOS4 <samp><span class="file">/bin/cc</span></samp>) also
|
||||
include the directory in which the source was compiled, in a second
|
||||
<code>N_SO</code> symbol preceding the one containing the file name. This
|
||||
symbol can be distinguished by the fact that it ends in a slash. Code
|
||||
from the <code>cfront</code> C<tt>++</tt> compiler can have additional <code>N_SO</code> symbols for
|
||||
nonexistent source files after the <code>N_SO</code> for the real source file;
|
||||
these are believed to contain no useful information.
|
||||
|
||||
<p>For example:
|
||||
|
||||
<pre class="example"> .stabs "/cygint/s1/users/jcm/play/",100,0,0,Ltext0 # <span class="roman">100 is N_SO</span>
|
||||
.stabs "hello.c",100,0,0,Ltext0
|
||||
.text
|
||||
Ltext0:
|
||||
</pre>
|
||||
<p><a name="index-C_005fFILE-3"></a>Instead of <code>N_SO</code> symbols, XCOFF uses a <code>.file</code> assembler
|
||||
directive which assembles to a <code>C_FILE</code> symbol; explaining this in
|
||||
detail is outside the scope of this document.
|
||||
|
||||
<!-- FIXME: Exactly when should the empty N_SO be used? Why? -->
|
||||
<p>If it is useful to indicate the end of a source file, this is done with
|
||||
an <code>N_SO</code> symbol with an empty string for the name. The value is
|
||||
the address of the end of the text section for the file. For some
|
||||
systems, there is no indication of the end of a source file, and you
|
||||
just need to figure it ended when you see an <code>N_SO</code> for a different
|
||||
source file, or a symbol ending in <code>.o</code> (which at least some
|
||||
linkers insert to mark the start of a new <code>.o</code> file).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stab Section Basics - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Stab-Sections.html#Stab-Sections" title="Stab Sections">
|
||||
<link rel="next" href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" title="ELF Linker Relocation">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stab-Section-Basics"></a>
|
||||
Next: <a rel="next" accesskey="n" href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">ELF Linker Relocation</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Stab-Sections.html#Stab-Sections">Stab Sections</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="appendixsec">F.1 How to Embed Stabs in Sections</h3>
|
||||
|
||||
<p>The assembler creates two custom sections, a section named <code>.stab</code>
|
||||
which contains an array of fixed length structures, one struct per stab,
|
||||
and a section named <code>.stabstr</code> containing all the variable length
|
||||
strings that are referenced by stabs in the <code>.stab</code> section. The
|
||||
byte 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
|
||||
from the <code>EI_DATA</code> field in the <code>e_ident</code> member of the ELF
|
||||
header. 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 is the same as for a.out (see <a href="Symbol-Table-Format.html#Symbol-Table-Format">Symbol Table Format</a>), except
|
||||
that the <code>n_strx</code> field is relative to the strings for the current
|
||||
compilation unit (which can be found using the synthetic N_UNDF stab
|
||||
described below), rather than the entire string table.
|
||||
|
||||
<p>The first stab in the <code>.stab</code> section for each compilation unit is
|
||||
synthetic, generated entirely by the assembler, with no corresponding
|
||||
<code>.stab</code> directive as input to the assembler. This stab contains
|
||||
the following fields:
|
||||
|
||||
<dl>
|
||||
<dt><code>n_strx</code><dd>Offset in the <code>.stabstr</code> section to the source filename.
|
||||
|
||||
<br><dt><code>n_type</code><dd><code>N_UNDF</code>.
|
||||
|
||||
<br><dt><code>n_other</code><dd>Unused field, always zero.
|
||||
This may eventually be used to hold overflows from the count in
|
||||
the <code>n_desc</code> field.
|
||||
|
||||
<br><dt><code>n_desc</code><dd>Count of upcoming symbols, i.e., the number of remaining stabs for this
|
||||
source file.
|
||||
|
||||
<br><dt><code>n_value</code><dd>Size of the string table fragment associated with this source file, in
|
||||
bytes.
|
||||
</dl>
|
||||
|
||||
<p>The <code>.stabstr</code> section always starts with a null byte (so that string
|
||||
offsets of zero reference a null string), followed by random length strings,
|
||||
each of which is null byte terminated.
|
||||
|
||||
<p>The ELF section header for the <code>.stab</code> section has its
|
||||
<code>sh_link</code> member set to the section number of the <code>.stabstr</code>
|
||||
section, and the <code>.stabstr</code> section has its ELF section
|
||||
header <code>sh_type</code> member set to <code>SHT_STRTAB</code> to mark it as a
|
||||
string table. SOM and COFF have no way of linking the sections together
|
||||
or marking them as string tables.
|
||||
|
||||
<p>For COFF, the <code>.stab</code> and <code>.stabstr</code> sections may be simply
|
||||
concatenated by the linker. GDB then uses the <code>n_desc</code> fields to
|
||||
figure out the extent of the original sections. Similarly, the
|
||||
<code>n_value</code> fields of the header symbols are added together in order
|
||||
to get the actual position of the strings in a desired <code>.stabstr</code>
|
||||
section. Although this design obviates any need for the linker to
|
||||
relocate or otherwise manipulate <code>.stab</code> and <code>.stabstr</code>
|
||||
sections, it also requires some care to ensure that the offsets are
|
||||
calculated correctly. For instance, if the linker were to pad in
|
||||
between the <code>.stabstr</code> sections before concatenating, then the
|
||||
offsets to strings in the middle of the executable's <code>.stabstr</code>
|
||||
section would be wrong.
|
||||
|
||||
<p>The GNU linker is able to optimize stabs information by merging
|
||||
duplicate strings and removing duplicate header file information
|
||||
(see <a href="Include-Files.html#Include-Files">Include Files</a>). When some versions of the GNU linker optimize
|
||||
stabs in sections, they remove the leading <code>N_UNDF</code> symbol and
|
||||
arranges for all the <code>n_strx</code> fields to be relative to the start of
|
||||
the <code>.stabstr</code> section.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stab Section Transformations - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" title="Transformations On Symbol Tables">
|
||||
<link rel="prev" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" title="Transformations On Global Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stab-Section-Transformations"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables">Transformations On Global Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">Transformations On Symbol Tables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">7.2.3 Transformations of Stabs in separate sections</h4>
|
||||
|
||||
<p>For object file formats using stabs in separate sections (see <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>), use <code>objdump --stabs</code> instead of <code>nm</code> to show the
|
||||
stabs in an object or executable file. <code>objdump</code> is a GNU utility;
|
||||
Sun does not provide any equivalent.
|
||||
|
||||
<p>The following example is for a stab whose value is an address is
|
||||
relative to the compilation unit (see <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">ELF Linker Relocation</a>). For
|
||||
example, if the source line
|
||||
|
||||
<pre class="example"> static int ld = 5;
|
||||
</pre>
|
||||
<p>appears within a function, then the assembly language output from the
|
||||
compiler contains:
|
||||
|
||||
<pre class="example"> .Ddata.data:
|
||||
...
|
||||
.stabs "ld:V(0,3)",0x26,0,4,.L18-Ddata.data # <span class="roman">0x26 is N_STSYM</span>
|
||||
...
|
||||
.L18:
|
||||
.align 4
|
||||
.word 0x5
|
||||
</pre>
|
||||
<p>Because the value is formed by subtracting one symbol from another, the
|
||||
value is absolute, not relocatable, and so the object file contains
|
||||
|
||||
<pre class="example"> Symnum n_type n_othr n_desc n_value n_strx String
|
||||
31 STSYM 0 4 00000004 680 ld:V(0,3)
|
||||
</pre>
|
||||
<p>without any relocations, and the executable file also contains
|
||||
|
||||
<pre class="example"> Symnum n_type n_othr n_desc n_value n_strx String
|
||||
31 STSYM 0 4 00000004 680 ld:V(0,3)
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stab Sections - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Questions.html#Questions" title="Questions">
|
||||
<link rel="next" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" title="GNU Free Documentation License">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stab-Sections"></a>
|
||||
Next: <a rel="next" accesskey="n" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Questions.html#Questions">Questions</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix F Using Stabs in Their Own Sections</h2>
|
||||
|
||||
<p>Many object file formats allow tools to create object files with custom
|
||||
sections containing any arbitrary data. For any such object file
|
||||
format, stabs can be embedded in special sections. This is how stabs
|
||||
are used with ELF and SOM, and aside from ECOFF and XCOFF, is how stabs
|
||||
are used with COFF.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Stab-Section-Basics.html#Stab-Section-Basics">Stab Section Basics</a>: How to embed stabs in sections
|
||||
<li><a accesskey="2" href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">ELF Linker Relocation</a>: Sun ELF hacks
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stab Symbol Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Stab-Types.html#Stab-Types" title="Stab Types">
|
||||
<link rel="prev" href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" title="Non-Stab Symbol Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stab-Symbol-Types"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types">Non-Stab Symbol Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Stab-Types.html#Stab-Types">Stab Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="appendixsec">A.2 Stab Symbol Types</h3>
|
||||
|
||||
<p>The following symbol types indicate that this is a stab. This is the
|
||||
full list of stab numbers, including stab types that are used in
|
||||
languages other than C.
|
||||
|
||||
<dl>
|
||||
<dt><code>0x20 N_GSYM</code><dd>Global symbol; see <a href="Global-Variables.html#Global-Variables">Global Variables</a>.
|
||||
|
||||
<br><dt><code>0x22 N_FNAME</code><dd>Function name (for BSD Fortran); see <a href="Procedures.html#Procedures">Procedures</a>.
|
||||
|
||||
<br><dt><code>0x24 N_FUN</code><dd>Function name (see <a href="Procedures.html#Procedures">Procedures</a>) or text segment variable
|
||||
(see <a href="Statics.html#Statics">Statics</a>).
|
||||
|
||||
<br><dt><code>0x26 N_STSYM</code><dd>Data segment file-scope variable; see <a href="Statics.html#Statics">Statics</a>.
|
||||
|
||||
<br><dt><code>0x28 N_LCSYM</code><dd>BSS segment file-scope variable; see <a href="Statics.html#Statics">Statics</a>.
|
||||
|
||||
<br><dt><code>0x2a N_MAIN</code><dd>Name of main routine; see <a href="Main-Program.html#Main-Program">Main Program</a>.
|
||||
|
||||
<br><dt><code>0x2c N_ROSYM</code><dd>Variable in <code>.rodata</code> section; see <a href="Statics.html#Statics">Statics</a>.
|
||||
|
||||
<br><dt><code>0x30 N_PC</code><dd>Global symbol (for Pascal); see <a href="N_005fPC.html#N_005fPC">N_PC</a>.
|
||||
|
||||
<br><dt><code>0x32 N_NSYMS</code><dd>Number of symbols (according to Ultrix V4.0); see <a href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a>.
|
||||
|
||||
<br><dt><code>0x34 N_NOMAP</code><dd>No DST map; see <a href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a>.
|
||||
|
||||
<br><dt><code>0x36 N_MAC_DEFINE</code><dd>Name and body of a <code>#define</code>d macro; see <a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a>.
|
||||
|
||||
<!-- FIXME: describe this solaris feature in the body of the text (see -->
|
||||
<!-- comments in include/aout/stab.def). -->
|
||||
<br><dt><code>0x38 N_OBJ</code><dd>Object file (Solaris2).
|
||||
|
||||
<br><dt><code>0x3a N_MAC_UNDEF</code><dd>Name of an <code>#undef</code>ed macro; see <a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a>.
|
||||
|
||||
<!-- See include/aout/stab.def for (a little) more info. -->
|
||||
<br><dt><code>0x3c N_OPT</code><dd>Debugger options (Solaris2).
|
||||
|
||||
<br><dt><code>0x40 N_RSYM</code><dd>Register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>.
|
||||
|
||||
<br><dt><code>0x42 N_M2C</code><dd>Modula-2 compilation unit; see <a href="N_005fM2C.html#N_005fM2C">N_M2C</a>.
|
||||
|
||||
<br><dt><code>0x44 N_SLINE</code><dd>Line number in text segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>.
|
||||
|
||||
<br><dt><code>0x46 N_DSLINE</code><dd>Line number in data segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>.
|
||||
|
||||
<br><dt><code>0x48 N_BSLINE</code><dd>Line number in bss segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>.
|
||||
|
||||
<br><dt><code>0x48 N_BROWS</code><dd>Sun source code browser, path to <samp><span class="file">.cb</span></samp> file; see <a href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a>.
|
||||
|
||||
<br><dt><code>0x4a N_DEFD</code><dd>GNU Modula2 definition module dependency; see <a href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a>.
|
||||
|
||||
<br><dt><code>0x4c N_FLINE</code><dd>Function start/body/end line numbers (Solaris2).
|
||||
|
||||
<br><dt><code>0x50 N_EHDECL</code><dd>GNU C<tt>++</tt> exception variable; see <a href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a>.
|
||||
|
||||
<br><dt><code>0x50 N_MOD2</code><dd>Modula2 info "for imc" (according to Ultrix V4.0); see <a href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a>.
|
||||
|
||||
<br><dt><code>0x54 N_CATCH</code><dd>GNU C<tt>++</tt> <code>catch</code> clause; see <a href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a>.
|
||||
|
||||
<br><dt><code>0x60 N_SSYM</code><dd>Structure of union element; see <a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>.
|
||||
|
||||
<br><dt><code>0x62 N_ENDM</code><dd>Last stab for module (Solaris2).
|
||||
|
||||
<br><dt><code>0x64 N_SO</code><dd>Path and name of source file; see <a href="Source-Files.html#Source-Files">Source Files</a>.
|
||||
|
||||
<br><dt><code>0x80 N_LSYM</code><dd>Stack variable (see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>) or type (see <a href="Typedefs.html#Typedefs">Typedefs</a>).
|
||||
|
||||
<br><dt><code>0x82 N_BINCL</code><dd>Beginning of an include file (Sun only); see <a href="Include-Files.html#Include-Files">Include Files</a>.
|
||||
|
||||
<br><dt><code>0x84 N_SOL</code><dd>Name of include file; see <a href="Include-Files.html#Include-Files">Include Files</a>.
|
||||
|
||||
<br><dt><code>0xa0 N_PSYM</code><dd>Parameter variable; see <a href="Parameters.html#Parameters">Parameters</a>.
|
||||
|
||||
<br><dt><code>0xa2 N_EINCL</code><dd>End of an include file; see <a href="Include-Files.html#Include-Files">Include Files</a>.
|
||||
|
||||
<br><dt><code>0xa4 N_ENTRY</code><dd>Alternate entry point; see <a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a>.
|
||||
|
||||
<br><dt><code>0xc0 N_LBRAC</code><dd>Beginning of a lexical block; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>.
|
||||
|
||||
<br><dt><code>0xc2 N_EXCL</code><dd>Place holder for a deleted include file; see <a href="Include-Files.html#Include-Files">Include Files</a>.
|
||||
|
||||
<br><dt><code>0xc4 N_SCOPE</code><dd>Modula2 scope information (Sun linker); see <a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>.
|
||||
|
||||
<br><dt><code>0xe0 N_RBRAC</code><dd>End of a lexical block; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>.
|
||||
|
||||
<br><dt><code>0xe2 N_BCOMM</code><dd>Begin named common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>.
|
||||
|
||||
<br><dt><code>0xe4 N_ECOMM</code><dd>End named common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>.
|
||||
|
||||
<br><dt><code>0xe8 N_ECOML</code><dd>Member of a common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>.
|
||||
|
||||
<!-- FIXME: How does this really work? Move it to main body of document. -->
|
||||
<br><dt><code>0xea N_WITH</code><dd>Pascal <code>with</code> statement: type,,0,0,offset (Solaris2).
|
||||
|
||||
<br><dt><code>0xf0 N_NBTEXT</code><dd>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>.
|
||||
|
||||
<br><dt><code>0xf2 N_NBDATA</code><dd>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>.
|
||||
|
||||
<br><dt><code>0xf4 N_NBBSS</code><dd>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>.
|
||||
|
||||
<br><dt><code>0xf6 N_NBSTS</code><dd>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>.
|
||||
|
||||
<br><dt><code>0xf8 N_NBLCS</code><dd>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>.
|
||||
</dl>
|
||||
|
||||
<!-- Restore the default table indent -->
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stab Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="next" href="Symbol-Descriptors.html#Symbol-Descriptors" title="Symbol Descriptors">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stab-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Cplusplus.html#Cplusplus">Cplusplus</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix A Table of Stab Types</h2>
|
||||
|
||||
<p>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
|
||||
it does apply to stabs in sections (see <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>). Stabs in
|
||||
ECOFF use these values but add 0x8f300 to distinguish them from non-stab
|
||||
symbols.
|
||||
|
||||
<p>The symbolic names are defined in the file <samp><span class="file">include/aout/stabs.def</span></samp>.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types">Non-Stab Symbol Types</a>: Types from 0 to 0x1f
|
||||
<li><a accesskey="2" href="Stab-Symbol-Types.html#Stab-Symbol-Types">Stab Symbol Types</a>: Types from 0x20 to 0xff
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stabs Format - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="prev" href="Flow.html#Flow" title="Flow">
|
||||
<link rel="next" href="String-Field.html#String-Field" title="String Field">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stabs-Format"></a>
|
||||
Next: <a rel="next" accesskey="n" href="String-Field.html#String-Field">String Field</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Flow.html#Flow">Flow</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Overview.html#Overview">Overview</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">1.2 Overview of Stab Format</h3>
|
||||
|
||||
<p>There are three overall formats for stab assembler directives,
|
||||
differentiated by the first word of the stab. The name of the directive
|
||||
describes which combination of four possible data fields follows. It is
|
||||
either <code>.stabs</code> (string), <code>.stabn</code> (number), or <code>.stabd</code>
|
||||
(dot). IBM's XCOFF assembler uses <code>.stabx</code> (and some other
|
||||
directives such as <code>.file</code> and <code>.bi</code>) instead of
|
||||
<code>.stabs</code>, <code>.stabn</code> or <code>.stabd</code>.
|
||||
|
||||
<p>The overall format of each class of stab is:
|
||||
|
||||
<pre class="example"> .stabs "<var>string</var>",<var>type</var>,<var>other</var>,<var>desc</var>,<var>value</var>
|
||||
.stabn <var>type</var>,<var>other</var>,<var>desc</var>,<var>value</var>
|
||||
.stabd <var>type</var>,<var>other</var>,<var>desc</var>
|
||||
.stabx "<var>string</var>",<var>value</var>,<var>type</var>,<var>sdb-type</var>
|
||||
</pre>
|
||||
<!-- what is the correct term for "current file location"? My AIX -->
|
||||
<!-- assembler manual calls it "the value of the current location counter". -->
|
||||
<p>For <code>.stabn</code> and <code>.stabd</code>, there is no <var>string</var> (the
|
||||
<code>n_strx</code> field is zero; see <a href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>). For
|
||||
<code>.stabd</code>, the <var>value</var> field is implicit and has the value of
|
||||
the current file location. For <code>.stabx</code>, the <var>sdb-type</var> field
|
||||
is unused for stabs and can always be set to zero. The <var>other</var>
|
||||
field is almost always unused and can be set to zero.
|
||||
|
||||
<p>The number in the <var>type</var> field gives some basic information about
|
||||
which type of stab this is (or whether it <em>is</em> a stab, as opposed
|
||||
to an ordinary symbol). Each valid type number defines a different stab
|
||||
type; further, the stab type defines the exact interpretation of, and
|
||||
possible values for, any remaining <var>string</var>, <var>desc</var>, or
|
||||
<var>value</var> fields present in the stab. See <a href="Stab-Types.html#Stab-Types">Stab Types</a>, for a list
|
||||
in numeric order of the valid <var>type</var> field values for stab directives.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Stack Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="next" href="Global-Variables.html#Global-Variables" title="Global Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Stack-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Global-Variables.html#Global-Variables">Global Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.1 Automatic Variables Allocated on the Stack</h3>
|
||||
|
||||
<p>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
|
||||
<dfn>automatic</dfn>), it can be allocated in a register (see <a href="Register-Variables.html#Register-Variables">Register Variables</a>) or on the stack.
|
||||
|
||||
<p><a name="index-N_005fLSYM_002c-for-stack-variables-25"></a><a name="index-C_005fLSYM-26"></a>Each variable allocated on the stack has a stab with the symbol
|
||||
descriptor omitted. Since type information should begin with a digit,
|
||||
‘<samp><span class="samp">-</span></samp>’, or ‘<samp><span class="samp">(</span></samp>’, only those characters precluded from being used
|
||||
for symbol descriptors. However, the Acorn RISC machine (ARM) is said
|
||||
to get this wrong: it puts out a mere type definition here, without the
|
||||
preceding ‘<samp><var>type-number</var><span class="samp">=</span></samp>’. This is a bad idea; there is no
|
||||
guarantee that type descriptors are distinct from symbol descriptors.
|
||||
Stabs for stack variables use the <code>N_LSYM</code> stab type, or
|
||||
<code>C_LSYM</code> for XCOFF.
|
||||
|
||||
<p>The value of the stab is the offset of the variable within the
|
||||
local variables. On most machines this is an offset from the frame
|
||||
pointer and is negative. The location of the stab specifies which block
|
||||
it is defined in; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>.
|
||||
|
||||
<p>For example, the following C code:
|
||||
|
||||
<pre class="example"> int
|
||||
main ()
|
||||
{
|
||||
int x;
|
||||
}
|
||||
</pre>
|
||||
<p>produces the following stabs:
|
||||
|
||||
<pre class="example"> .stabs "main:F1",36,0,0,_main # <span class="roman">36 is N_FUN</span>
|
||||
.stabs "x:1",128,0,0,-12 # <span class="roman">128 is N_LSYM</span>
|
||||
.stabn 192,0,0,LBB2 # <span class="roman">192 is N_LBRAC</span>
|
||||
.stabn 224,0,0,LBE2 # <span class="roman">224 is N_RBRAC</span>
|
||||
</pre>
|
||||
<p>See <a href="Procedures.html#Procedures">Procedures</a> for more information on the <code>N_FUN</code> stab, and
|
||||
<a href="Block-Structure.html#Block-Structure">Block Structure</a> for more information on the <code>N_LBRAC</code> and
|
||||
<code>N_RBRAC</code> stabs.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Static Members - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Virtual-Base-Classes.html#Virtual-Base-Classes" title="Virtual Base Classes">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Static-Members"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Virtual-Base-Classes.html#Virtual-Base-Classes">Virtual Base Classes</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.14 Static Members</h3>
|
||||
|
||||
<p>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
|
||||
pointer follows the class data. The field offset part of each field
|
||||
description in the class stab shows this ordering.
|
||||
|
||||
<p><< How is this reflected in stabs? See Cygnus bug #677 for some info. >>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Statics - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="prev" href="Common-Blocks.html#Common-Blocks" title="Common Blocks">
|
||||
<link rel="next" href="Based-Variables.html#Based-Variables" title="Based Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Statics"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Based-Variables.html#Based-Variables">Based Variables</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Common-Blocks.html#Common-Blocks">Common Blocks</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Variables.html#Variables">Variables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">4.5 Static Variables</h3>
|
||||
|
||||
<p>Initialized static variables are represented by the ‘<samp><span class="samp">S</span></samp>’ and
|
||||
‘<samp><span class="samp">V</span></samp>’ symbol descriptors. ‘<samp><span class="samp">S</span></samp>’ means file scope static, and
|
||||
‘<samp><span class="samp">V</span></samp>’ means procedure scope static. One exception: in XCOFF, IBM's
|
||||
xlc compiler always uses ‘<samp><span class="samp">V</span></samp>’, and whether it is file scope or not
|
||||
is distinguished by whether the stab is located within a function.
|
||||
|
||||
<!-- This is probably not worth mentioning; it is only true on the sparc -->
|
||||
<!-- for `double' variables which although declared const are actually in -->
|
||||
<!-- the data segment (the text segment can't guarantee 8 byte alignment). -->
|
||||
<!-- (although GCC -->
|
||||
<!-- 2.4.5 has a bug in that it uses @code{N_FUN}, so neither dbx nor GDB can -->
|
||||
<!-- find the variables) -->
|
||||
<p><a name="index-N_005fSTSYM-37"></a><a name="index-N_005fLCSYM-38"></a><a name="index-N_005fFUN_002c-for-variables-39"></a><a name="index-N_005fROSYM-40"></a>In a.out files, <code>N_STSYM</code> means the data section, <code>N_FUN</code>
|
||||
means the text section, and <code>N_LCSYM</code> means the bss section. For
|
||||
those systems with a read-only data section separate from the text
|
||||
section (Solaris), <code>N_ROSYM</code> means the read-only data section.
|
||||
|
||||
<p>For example, the source lines:
|
||||
|
||||
<pre class="example"> static const int var_const = 5;
|
||||
static int var_init = 2;
|
||||
static int var_noinit;
|
||||
</pre>
|
||||
<p class="noindent">yield the following stabs:
|
||||
|
||||
<pre class="example"> .stabs "var_const:S1",36,0,0,_var_const # <span class="roman">36 is N_FUN</span>
|
||||
...
|
||||
.stabs "var_init:S1",38,0,0,_var_init # <span class="roman">38 is N_STSYM</span>
|
||||
...
|
||||
.stabs "var_noinit:S1",40,0,0,_var_noinit # <span class="roman">40 is N_LCSYM</span>
|
||||
</pre>
|
||||
<p><a name="index-C_005fSTSYM-41"></a><a name="index-C_005fBSTAT-42"></a><a name="index-C_005fESTAT-43"></a>In XCOFF files, the stab type need not indicate the section;
|
||||
<code>C_STSYM</code> can be used for all statics. Also, each static variable
|
||||
is enclosed in a static block. A <code>C_BSTAT</code> (emitted with a
|
||||
‘<samp><span class="samp">.bs</span></samp>’ assembler directive) symbol begins the static block; its
|
||||
value is the symbol number of the csect symbol whose value is the
|
||||
address of the static block, its section is the section of the variables
|
||||
in that static block, and its name is ‘<samp><span class="samp">.bs</span></samp>’. A <code>C_ESTAT</code>
|
||||
(emitted with a ‘<samp><span class="samp">.es</span></samp>’ assembler directive) symbol ends the static
|
||||
block; its name is ‘<samp><span class="samp">.es</span></samp>’ and its value and section are ignored.
|
||||
|
||||
<p>In ECOFF files, the storage class is used to specify the section, so the
|
||||
stab type need not indicate the section.
|
||||
|
||||
<p>In ELF files, for the SunPRO compiler version 2.0.1, symbol descriptor
|
||||
‘<samp><span class="samp">S</span></samp>’ means that the address is absolute (the linker relocates it)
|
||||
and symbol descriptor ‘<samp><span class="samp">V</span></samp>’ means that the address is relative to the
|
||||
start of the relevant section for that compilation unit. SunPRO has
|
||||
plans to have the linker stop relocating stabs; I suspect that their the
|
||||
debugger gets the address from the corresponding ELF (not stab) symbol.
|
||||
I'm not sure how to find which symbol of that name is the right one.
|
||||
The clean way to do all this would be to have the value of a symbol
|
||||
descriptor ‘<samp><span class="samp">S</span></samp>’ symbol be an offset relative to the start of the
|
||||
file, just like everything else, but that introduces obvious
|
||||
compatibility problems. For more information on linker stab relocation,
|
||||
See <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">ELF Linker Relocation</a>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>String Field - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Overview.html#Overview" title="Overview">
|
||||
<link rel="prev" href="Stabs-Format.html#Stabs-Format" title="Stabs Format">
|
||||
<link rel="next" href="C-Example.html#C-Example" title="C Example">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="String-Field"></a>
|
||||
Next: <a rel="next" accesskey="n" href="C-Example.html#C-Example">C Example</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Stabs-Format.html#Stabs-Format">Stabs Format</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Overview.html#Overview">Overview</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">1.3 The String Field</h3>
|
||||
|
||||
<p>For most stabs the string field holds the meat of the
|
||||
debugging information. The flexible nature of this field
|
||||
is what makes stabs extensible. For some stab types the string field
|
||||
contains only a name. For other stab types the contents can be a great
|
||||
deal more complex.
|
||||
|
||||
<p>The overall format of the string field for most stab types is:
|
||||
|
||||
<pre class="example"> "<var>name</var>:<var>symbol-descriptor</var> <var>type-information</var>"
|
||||
</pre>
|
||||
<p><var>name</var> is the name of the symbol represented by the stab; it can
|
||||
contain a pair of colons (see <a href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>). <var>name</var> can be
|
||||
omitted, which means the stab represents an unnamed object. For
|
||||
example, ‘<samp><span class="samp">:t10=*2</span></samp>’ defines type 10 as a pointer to type 2, but does
|
||||
not give the type a name. Omitting the <var>name</var> field is supported by
|
||||
AIX dbx and GDB after about version 4.8, but not other debuggers. GCC
|
||||
sometimes uses a single space as the name instead of omitting the name
|
||||
altogether; apparently that is supported by most debuggers.
|
||||
|
||||
<p>The <var>symbol-descriptor</var> following the ‘<samp><span class="samp">:</span></samp>’ is an alphabetic
|
||||
character that tells more specifically what kind of symbol the stab
|
||||
represents. If the <var>symbol-descriptor</var> is omitted, but type
|
||||
information follows, then the stab represents a local variable. For a
|
||||
list of symbol descriptors, see <a href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>. The ‘<samp><span class="samp">c</span></samp>’
|
||||
symbol descriptor is an exception in that it is not followed by type
|
||||
information. See <a href="Constants.html#Constants">Constants</a>.
|
||||
|
||||
<p><var>type-information</var> is either a <var>type-number</var>, or
|
||||
‘<samp><var>type-number</var><span class="samp">=</span></samp>’. A <var>type-number</var> alone is a type
|
||||
reference, referring directly to a type that has already been defined.
|
||||
|
||||
<p>The ‘<samp><var>type-number</var><span class="samp">=</span></samp>’ form is a type definition, where the
|
||||
number represents a new type which is about to be defined. The type
|
||||
definition may refer to other types by number, and those type numbers
|
||||
may be followed by ‘<samp><span class="samp">=</span></samp>’ and nested definitions. Also, the Lucid
|
||||
compiler will repeat ‘<samp><var>type-number</var><span class="samp">=</span></samp>’ more than once if it
|
||||
wants to define several type numbers at once.
|
||||
|
||||
<p>In a type definition, if the character that follows the equals sign is
|
||||
non-numeric then it is a <var>type-descriptor</var>, and tells what kind of
|
||||
type is about to be defined. Any other values following the
|
||||
<var>type-descriptor</var> vary, depending on the <var>type-descriptor</var>.
|
||||
See <a href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>, for a list of <var>type-descriptor</var> values. If
|
||||
a number follows the ‘<samp><span class="samp">=</span></samp>’ then the number is a <var>type-reference</var>.
|
||||
For a full description of types, <a href="Types.html#Types">Types</a>.
|
||||
|
||||
<p>A <var>type-number</var> is often a single number. The GNU and Sun tools
|
||||
additionally permit a <var>type-number</var> to be a pair
|
||||
(<var>file-number</var>,<var>filetype-number</var>) (the parentheses appear in the
|
||||
string, and serve to distinguish the two cases). The <var>file-number</var>
|
||||
is 0 for the base source file, 1 for the first included file, 2 for the
|
||||
next, and so on. The <var>filetype-number</var> is a number starting with
|
||||
1 which is incremented for each new type defined in the file.
|
||||
(Separating the file number and the type number permits the
|
||||
<code>N_BINCL</code> optimization to succeed more often; see <a href="Include-Files.html#Include-Files">Include Files</a>).
|
||||
|
||||
<p>There is an AIX extension for type attributes. Following the ‘<samp><span class="samp">=</span></samp>’
|
||||
are any number of type attributes. Each one starts with ‘<samp><span class="samp">@</span></samp>’ and
|
||||
ends with ‘<samp><span class="samp">;</span></samp>’. Debuggers, including AIX's dbx and GDB 4.10, skip
|
||||
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<tt>++</tt>
|
||||
(see <a href="Cplusplus.html#Cplusplus">Cplusplus</a>), new attributes should not be defined which begin
|
||||
with a digit, ‘<samp><span class="samp">(</span></samp>’, or ‘<samp><span class="samp">-</span></samp>’; GDB may be unable to distinguish
|
||||
those from the C<tt>++</tt> type descriptor ‘<samp><span class="samp">@</span></samp>’. The attributes are:
|
||||
|
||||
<dl>
|
||||
<dt><code>a</code><var>boundary</var><dd><var>boundary</var> is an integer specifying the alignment. I assume it
|
||||
applies to all variables of this type.
|
||||
|
||||
<br><dt><code>p</code><var>integer</var><dd>Pointer class (for checking). Not sure what this means, or how
|
||||
<var>integer</var> is interpreted.
|
||||
|
||||
<br><dt><code>P</code><dd>Indicate this is a packed type, meaning that structure fields or array
|
||||
elements are placed more closely in memory, to save memory at the
|
||||
expense of speed.
|
||||
|
||||
<br><dt><code>s</code><var>size</var><dd>Size in bits of a variable of this type. This is fully supported by GDB
|
||||
4.11 and later.
|
||||
|
||||
<br><dt><code>S</code><dd>Indicate that this type is a string instead of an array of characters,
|
||||
or a bitstring instead of a set. It doesn't change the layout of the
|
||||
data being represented, but does enable the debugger to know which type
|
||||
it is.
|
||||
|
||||
<br><dt><code>V</code><dd>Indicate that this type is a vector instead of an array. The only
|
||||
major difference between vectors and arrays is that vectors are
|
||||
passed by value instead of by reference (vector coprocessor extension).
|
||||
|
||||
</dl>
|
||||
|
||||
<p>All of this can make the string field quite long. All versions of GDB,
|
||||
and some versions of dbx, can handle arbitrarily long strings. But many
|
||||
versions of dbx (or assemblers or linkers, I'm not sure which)
|
||||
cretinously limit the strings to about 80 characters, so compilers which
|
||||
must work with such systems need to split the <code>.stabs</code> directive
|
||||
into several <code>.stabs</code> directives. Each stab duplicates every field
|
||||
except the string field. The string field of every stab except the last
|
||||
is marked as continued with a backslash at the end (in the assembly code
|
||||
this may be written as a double backslash, depending on the assembler).
|
||||
Removing the backslashes and concatenating the string fields of each
|
||||
stab produces the original, long string. Just to be incompatible (or so
|
||||
they don't have to worry about what the assembler does with
|
||||
backslashes), AIX can use ‘<samp><span class="samp">?</span></samp>’ instead of backslash.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Strings - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Arrays.html#Arrays" title="Arrays">
|
||||
<link rel="next" href="Enumerations.html#Enumerations" title="Enumerations">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Strings"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Enumerations.html#Enumerations">Enumerations</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Arrays.html#Arrays">Arrays</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.6 Strings</h3>
|
||||
|
||||
<p>Some languages, like C or the original Pascal, do not have string types,
|
||||
they just have related things like arrays of characters. But most
|
||||
Pascals and various other languages have string types, which are
|
||||
indicated as follows:
|
||||
|
||||
<dl>
|
||||
<dt><code>n </code><var>type-information</var><code> ; </code><var>bytes</var><dd><var>bytes</var> is the maximum length. I'm not sure what
|
||||
<var>type-information</var> is; I suspect that it means that this is a string
|
||||
of <var>type-information</var> (thus allowing a string of integers, a string
|
||||
of wide characters, etc., as well as a string of characters). Not sure
|
||||
what the format of this type is. This is an AIX feature.
|
||||
|
||||
<br><dt><code>z </code><var>type-information</var><code> ; </code><var>bytes</var><dd>Just like ‘<samp><span class="samp">n</span></samp>’ except that this is a gstring, not an ordinary
|
||||
string. I don't know the difference.
|
||||
|
||||
<br><dt><code>N</code><dd>Pascal Stringptr. What is this? This is an AIX feature.
|
||||
</dl>
|
||||
|
||||
<p>Languages, such as CHILL which have a string type which is basically
|
||||
just an array of characters use the ‘<samp><span class="samp">S</span></samp>’ type attribute
|
||||
(see <a href="String-Field.html#String-Field">String Field</a>).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Structures - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Enumerations.html#Enumerations" title="Enumerations">
|
||||
<link rel="next" href="Typedefs.html#Typedefs" title="Typedefs">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Structures"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Typedefs.html#Typedefs">Typedefs</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Enumerations.html#Enumerations">Enumerations</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.8 Structures</h3>
|
||||
|
||||
<p>The encoding of structures in stabs can be shown with an example.
|
||||
|
||||
<p>The following source code declares a structure tag and defines an
|
||||
instance of the structure in global scope. Then a <code>typedef</code> equates the
|
||||
structure tag with a new type. Separate stabs are generated for the
|
||||
structure tag, the structure <code>typedef</code>, and the structure instance. The
|
||||
stabs for the tag and the <code>typedef</code> are emitted when the definitions are
|
||||
encountered. Since the structure elements are not initialized, the
|
||||
stab and code for the structure variable itself is located at the end
|
||||
of the program in the bss section.
|
||||
|
||||
<pre class="example"> struct s_tag {
|
||||
int s_int;
|
||||
float s_float;
|
||||
char s_char_vec[8];
|
||||
struct s_tag* s_next;
|
||||
} g_an_s;
|
||||
|
||||
typedef struct s_tag s_typedef;
|
||||
</pre>
|
||||
<p>The structure tag has an <code>N_LSYM</code> stab type because, like the
|
||||
enumeration, the symbol has file scope. Like the enumeration, the
|
||||
symbol descriptor is ‘<samp><span class="samp">T</span></samp>’, for enumeration, structure, or tag type.
|
||||
The type descriptor ‘<samp><span class="samp">s</span></samp>’ following the ‘<samp><span class="samp">16=</span></samp>’ of the type
|
||||
definition narrows the symbol type to structure.
|
||||
|
||||
<p>Following the ‘<samp><span class="samp">s</span></samp>’ type descriptor is the number of bytes the
|
||||
structure occupies, followed by a description of each structure element.
|
||||
The structure element descriptions are of the form
|
||||
‘<samp><var>name</var><span class="samp">:</span><var>type</var><span class="samp">, </span><var>bit offset from the start of the
|
||||
struct</var><span class="samp">, </span><var>number of bits in the element</var></samp>’.
|
||||
|
||||
<!-- FIXME: phony line break. Can probably be fixed by using an example -->
|
||||
<!-- with fewer fields. -->
|
||||
<pre class="example"> # <span class="roman">128 is N_LSYM</span>
|
||||
.stabs "s_tag:T16=s20s_int:1,0,32;s_float:12,32,32;
|
||||
s_char_vec:17=ar1;0;7;2,64,64;s_next:18=*16,128,32;;",128,0,0,0
|
||||
</pre>
|
||||
<p>In this example, the first two structure elements are previously defined
|
||||
types. For these, the type following the ‘<samp><var>name</var><span class="samp">:</span></samp>’ part of the
|
||||
element description is a simple type reference. The other two structure
|
||||
elements are new types. In this case there is a type definition
|
||||
embedded after the ‘<samp><var>name</var><span class="samp">:</span></samp>’. The type definition for the
|
||||
array element looks just like a type definition for a stand-alone array.
|
||||
The <code>s_next</code> field is a pointer to the same kind of structure that
|
||||
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.
|
||||
|
||||
<p>If a field is a static member (this is a C<tt>++</tt> feature in which a single
|
||||
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
|
||||
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.
|
||||
|
||||
<p>If the structure has methods (a C<tt>++</tt> feature), they follow the non-method
|
||||
fields; see <a href="Cplusplus.html#Cplusplus">Cplusplus</a>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Subranges - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Cross_002dReferences.html#Cross_002dReferences" title="Cross-References">
|
||||
<link rel="next" href="Arrays.html#Arrays" title="Arrays">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Subranges"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Arrays.html#Arrays">Arrays</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.4 Subrange Types</h3>
|
||||
|
||||
<p>The ‘<samp><span class="samp">r</span></samp>’ type descriptor defines a type as a subrange of another
|
||||
type. It is followed by type information for the type of which it is a
|
||||
subrange, a semicolon, an integral lower bound, a semicolon, an
|
||||
integral upper bound, and a semicolon. The AIX documentation does not
|
||||
specify the trailing semicolon, in an effort to specify array indexes
|
||||
more cleanly, but a subrange which is not an array index has always
|
||||
included a trailing semicolon (see <a href="Arrays.html#Arrays">Arrays</a>).
|
||||
|
||||
<p>Instead of an integer, either bound can be one of the following:
|
||||
|
||||
<dl>
|
||||
<dt><code>A </code><var>offset</var><dd>The bound is passed by reference on the stack at offset <var>offset</var>
|
||||
from the argument list. See <a href="Parameters.html#Parameters">Parameters</a>, for more information on such
|
||||
offsets.
|
||||
|
||||
<br><dt><code>T </code><var>offset</var><dd>The bound is passed by value on the stack at offset <var>offset</var> from
|
||||
the argument list.
|
||||
|
||||
<br><dt><code>a </code><var>register-number</var><dd>The bound is passed by reference in register number
|
||||
<var>register-number</var>.
|
||||
|
||||
<br><dt><code>t </code><var>register-number</var><dd>The bound is passed by value in register number <var>register-number</var>.
|
||||
|
||||
<br><dt><code>J</code><dd>There is no bound.
|
||||
</dl>
|
||||
|
||||
<p>Subranges are also used for builtin types; see <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Symbol Descriptors - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Stab-Types.html#Stab-Types" title="Stab Types">
|
||||
<link rel="next" href="Type-Descriptors.html#Type-Descriptors" title="Type Descriptors">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Symbol-Descriptors"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Stab-Types.html#Stab-Types">Stab Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix B Table of Symbol Descriptors</h2>
|
||||
|
||||
<p>The symbol descriptor is the character which follows the colon in many
|
||||
stabs, and which tells what kind of stab it is. See <a href="String-Field.html#String-Field">String Field</a>,
|
||||
for more information about their use.
|
||||
|
||||
<!-- Please keep this alphabetical -->
|
||||
<dl>
|
||||
<!-- In TeX, this looks great, digit is in italics. But makeinfo insists -->
|
||||
<!-- on putting it in `', not realizing that @var should override @code. -->
|
||||
<!-- I don't know of any way to make makeinfo do the right thing. Seems -->
|
||||
<!-- like a makeinfo bug to me. -->
|
||||
<dt><var>digit</var><dt><code>(</code><dt><code>-</code><dd>Variable on the stack; see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>.
|
||||
|
||||
<br><dt><code>:</code><dd>C<tt>++</tt> nested symbol; see See <a href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>.
|
||||
|
||||
<br><dt><code>a</code><dd>Parameter passed by reference in register; see <a href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>.
|
||||
|
||||
<br><dt><code>b</code><dd>Based variable; see <a href="Based-Variables.html#Based-Variables">Based Variables</a>.
|
||||
|
||||
<br><dt><code>c</code><dd>Constant; see <a href="Constants.html#Constants">Constants</a>.
|
||||
|
||||
<br><dt><code>C</code><dd>Conformant array bound (Pascal, maybe other languages); <a href="Conformant-Arrays.html#Conformant-Arrays">Conformant Arrays</a>. Name of a caught exception (GNU C<tt>++</tt>). These can be
|
||||
distinguished because the latter uses <code>N_CATCH</code> and the former uses
|
||||
another symbol type.
|
||||
|
||||
<br><dt><code>d</code><dd>Floating point register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>.
|
||||
|
||||
<br><dt><code>D</code><dd>Parameter in floating point register; see <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>.
|
||||
|
||||
<br><dt><code>f</code><dd>File scope function; see <a href="Procedures.html#Procedures">Procedures</a>.
|
||||
|
||||
<br><dt><code>F</code><dd>Global function; see <a href="Procedures.html#Procedures">Procedures</a>.
|
||||
|
||||
<br><dt><code>G</code><dd>Global variable; see <a href="Global-Variables.html#Global-Variables">Global Variables</a>.
|
||||
|
||||
<br><dt><code>i</code><dd>See <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>.
|
||||
|
||||
<br><dt><code>I</code><dd>Internal (nested) procedure; see <a href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>.
|
||||
|
||||
<br><dt><code>J</code><dd>Internal (nested) function; see <a href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>.
|
||||
|
||||
<br><dt><code>L</code><dd>Label name (documented by AIX, no further information known).
|
||||
|
||||
<br><dt><code>m</code><dd>Module; see <a href="Procedures.html#Procedures">Procedures</a>.
|
||||
|
||||
<br><dt><code>p</code><dd>Argument list parameter; see <a href="Parameters.html#Parameters">Parameters</a>.
|
||||
|
||||
<br><dt><code>pP</code><dd>See <a href="Parameters.html#Parameters">Parameters</a>.
|
||||
|
||||
<br><dt><code>pF</code><dd>Fortran Function parameter; see <a href="Parameters.html#Parameters">Parameters</a>.
|
||||
|
||||
<br><dt><code>P</code><dd>Unfortunately, three separate meanings have been independently invented
|
||||
for this symbol descriptor. At least the GNU and Sun uses can be
|
||||
distinguished by the symbol type. Global Procedure (AIX) (symbol type
|
||||
used unknown); see <a href="Procedures.html#Procedures">Procedures</a>. Register parameter (GNU) (symbol
|
||||
type <code>N_PSYM</code>); see <a href="Parameters.html#Parameters">Parameters</a>. Prototype of function
|
||||
referenced by this file (Sun <code>acc</code>) (symbol type <code>N_FUN</code>).
|
||||
|
||||
<br><dt><code>Q</code><dd>Static Procedure; see <a href="Procedures.html#Procedures">Procedures</a>.
|
||||
|
||||
<br><dt><code>R</code><dd>Register parameter; see <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>.
|
||||
|
||||
<br><dt><code>r</code><dd>Register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>.
|
||||
|
||||
<br><dt><code>S</code><dd>File scope variable; see <a href="Statics.html#Statics">Statics</a>.
|
||||
|
||||
<br><dt><code>s</code><dd>Local variable (OS9000).
|
||||
|
||||
<br><dt><code>t</code><dd>Type name; see <a href="Typedefs.html#Typedefs">Typedefs</a>.
|
||||
|
||||
<br><dt><code>T</code><dd>Enumeration, structure, or union tag; see <a href="Typedefs.html#Typedefs">Typedefs</a>.
|
||||
|
||||
<br><dt><code>v</code><dd>Parameter passed by reference; see <a href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>.
|
||||
|
||||
<br><dt><code>V</code><dd>Procedure scope static variable; see <a href="Statics.html#Statics">Statics</a>.
|
||||
|
||||
<br><dt><code>x</code><dd>Conformant array; see <a href="Conformant-Arrays.html#Conformant-Arrays">Conformant Arrays</a>.
|
||||
|
||||
<br><dt><code>X</code><dd>Function return variable; see <a href="Parameters.html#Parameters">Parameters</a>.
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Symbol Table Format - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Symbol-Tables.html#Symbol-Tables" title="Symbol Tables">
|
||||
<link rel="next" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" title="Transformations On Symbol Tables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Symbol-Table-Format"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">Transformations On Symbol Tables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">7.1 Symbol Table Format</h3>
|
||||
|
||||
<p>Each time the assembler encounters a stab directive, it puts
|
||||
each field of the stab into a corresponding field in a symbol table
|
||||
entry of its output file. If the stab contains a string field, the
|
||||
symbol table entry for that stab points to a string table entry
|
||||
containing the string data from the stab. Assembler labels become
|
||||
relocatable addresses. Symbol table entries in a.out have the format:
|
||||
|
||||
<!-- FIXME: should refer to external, not internal. -->
|
||||
<pre class="example"> struct internal_nlist {
|
||||
unsigned long n_strx; /* index into string table of name */
|
||||
unsigned char n_type; /* type of symbol */
|
||||
unsigned char n_other; /* misc info (usually empty) */
|
||||
unsigned short n_desc; /* description field */
|
||||
bfd_vma n_value; /* value of symbol */
|
||||
};
|
||||
</pre>
|
||||
<p>If the stab has a string, the <code>n_strx</code> field holds the offset in
|
||||
bytes of the string within the string table. The string is terminated
|
||||
by a NUL character. If the stab lacks a string (for example, it was
|
||||
produced by a <code>.stabn</code> or <code>.stabd</code> directive), the
|
||||
<code>n_strx</code> field is zero.
|
||||
|
||||
<p>Symbol table entries with <code>n_type</code> field values greater than 0x1f
|
||||
originated as stabs generated by the compiler (with one random
|
||||
exception). The other entries were placed in the symbol table of the
|
||||
executable by the assembler or the linker.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Symbol Tables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Macro-define-and-undefine.html#Macro-define-and-undefine" title="Macro define and undefine">
|
||||
<link rel="next" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Symbol-Tables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Cplusplus.html#Cplusplus">Cplusplus</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">7 Symbol Information in Symbol Tables</h2>
|
||||
|
||||
<p>This chapter describes the format of symbol table entries
|
||||
and how stab assembler directives map to them. It also describes the
|
||||
transformations that the assembler and linker make on data from stabs.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Symbol-Table-Format.html#Symbol-Table-Format">Symbol Table Format</a>
|
||||
<li><a accesskey="2" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">Transformations On Symbol Tables</a>
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Symbol Types Index - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" title="GNU Free Documentation License">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Symbol-Types-Index"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="unnumbered">Symbol Types Index</h2>
|
||||
|
||||
<ul class="index-fn" compact>
|
||||
<li><a href="Block-Structure.html#index-g_t_002ebb-20"><code>.bb</code></a>: <a href="Block-Structure.html#Block-Structure">Block Structure</a></li>
|
||||
<li><a href="Block-Structure.html#index-g_t_002ebe-21"><code>.be</code></a>: <a href="Block-Structure.html#Block-Structure">Block Structure</a></li>
|
||||
<li><a href="Common-Blocks.html#index-C_005fBCOMM-33"><code>C_BCOMM</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="Include-Files.html#index-C_005fBINCL-8"><code>C_BINCL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="Block-Structure.html#index-C_005fBLOCK-22"><code>C_BLOCK</code></a>: <a href="Block-Structure.html#Block-Structure">Block Structure</a></li>
|
||||
<li><a href="Statics.html#index-C_005fBSTAT-42"><code>C_BSTAT</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Typedefs.html#index-C_005fDECL_002c-for-types-50"><code>C_DECL, for types</code></a>: <a href="Typedefs.html#Typedefs">Typedefs</a></li>
|
||||
<li><a href="Common-Blocks.html#index-C_005fECOML-36"><code>C_ECOML</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="Common-Blocks.html#index-C_005fECOMM-34"><code>C_ECOMM</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="Include-Files.html#index-C_005fEINCL-9"><code>C_EINCL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="Alternate-Entry-Points.html#index-C_005fENTRY-24"><code>C_ENTRY</code></a>: <a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a></li>
|
||||
<li><a href="Statics.html#index-C_005fESTAT-43"><code>C_ESTAT</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Source-Files.html#index-C_005fFILE-3"><code>C_FILE</code></a>: <a href="Source-Files.html#Source-Files">Source Files</a></li>
|
||||
<li><a href="Procedures.html#index-C_005fFUN-17"><code>C_FUN</code></a>: <a href="Procedures.html#Procedures">Procedures</a></li>
|
||||
<li><a href="Global-Variables.html#index-C_005fGSYM-28"><code>C_GSYM</code></a>: <a href="Global-Variables.html#Global-Variables">Global Variables</a></li>
|
||||
<li><a href="Stack-Variables.html#index-C_005fLSYM-26"><code>C_LSYM</code></a>: <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a></li>
|
||||
<li><a href="Parameters.html#index-C_005fPSYM-45"><code>C_PSYM</code></a>: <a href="Parameters.html#Parameters">Parameters</a></li>
|
||||
<li><a href="Register-Parameters.html#index-C_005fRPSYM-46"><code>C_RPSYM</code></a>: <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a></li>
|
||||
<li><a href="Register-Variables.html#index-C_005fRSYM-30"><code>C_RSYM</code></a>: <a href="Register-Variables.html#Register-Variables">Register Variables</a></li>
|
||||
<li><a href="Statics.html#index-C_005fSTSYM-41"><code>C_STSYM</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Common-Blocks.html#index-N_005fBCOMM-31"><code>N_BCOMM</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="Include-Files.html#index-N_005fBINCL-5"><code>N_BINCL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="N_005fBROWS.html#index-N_005fBROWS-61"><code>N_BROWS</code></a>: <a href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a></li>
|
||||
<li><a href="Line-Numbers.html#index-N_005fBSLINE-12"><code>N_BSLINE</code></a>: <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></li>
|
||||
<li><a href="N_005fCATCH.html#index-N_005fCATCH-69"><code>N_CATCH</code></a>: <a href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a></li>
|
||||
<li><a href="N_005fDEFD.html#index-N_005fDEFD-63"><code>N_DEFD</code></a>: <a href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a></li>
|
||||
<li><a href="Line-Numbers.html#index-N_005fDSLINE-11"><code>N_DSLINE</code></a>: <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></li>
|
||||
<li><a href="Common-Blocks.html#index-N_005fECOML-35"><code>N_ECOML</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="Common-Blocks.html#index-N_005fECOMM-32"><code>N_ECOMM</code></a>: <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></li>
|
||||
<li><a href="N_005fEHDECL.html#index-N_005fEHDECL-65"><code>N_EHDECL</code></a>: <a href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a></li>
|
||||
<li><a href="Include-Files.html#index-N_005fEINCL-6"><code>N_EINCL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="Alternate-Entry-Points.html#index-N_005fENTRY-23"><code>N_ENTRY</code></a>: <a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a></li>
|
||||
<li><a href="Include-Files.html#index-N_005fEXCL-7"><code>N_EXCL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="Procedures.html#index-N_005fFNAME-14"><code>N_FNAME</code></a>: <a href="Procedures.html#Procedures">Procedures</a></li>
|
||||
<li><a href="Procedures.html#index-N_005fFUN_002c-for-functions-13"><code>N_FUN, for functions</code></a>: <a href="Procedures.html#Procedures">Procedures</a></li>
|
||||
<li><a href="Statics.html#index-N_005fFUN_002c-for-variables-39"><code>N_FUN, for variables</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Global-Variables.html#index-N_005fGSYM-27"><code>N_GSYM</code></a>: <a href="Global-Variables.html#Global-Variables">Global Variables</a></li>
|
||||
<li><a href="Procedures.html#index-N_005fGSYM_002c-for-functions-_0028Sun-acc_0029-16"><code>N_GSYM, for functions (Sun acc)</code></a>: <a href="Procedures.html#Procedures">Procedures</a></li>
|
||||
<li><a href="Block-Structure.html#index-N_005fLBRAC-18"><code>N_LBRAC</code></a>: <a href="Block-Structure.html#Block-Structure">Block Structure</a></li>
|
||||
<li><a href="Statics.html#index-N_005fLCSYM-38"><code>N_LCSYM</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="N_005fLENG.html#index-N_005fLENG-85"><code>N_LENG</code></a>: <a href="N_005fLENG.html#N_005fLENG">N_LENG</a></li>
|
||||
<li><a href="Local-Variable-Parameters.html#index-N_005fLSYM_002c-for-parameter-48"><code>N_LSYM, for parameter</code></a>: <a href="Local-Variable-Parameters.html#Local-Variable-Parameters">Local Variable Parameters</a></li>
|
||||
<li><a href="Stack-Variables.html#index-N_005fLSYM_002c-for-stack-variables-25"><code>N_LSYM, for stack variables</code></a>: <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a></li>
|
||||
<li><a href="Typedefs.html#index-N_005fLSYM_002c-for-types-49"><code>N_LSYM, for types</code></a>: <a href="Typedefs.html#Typedefs">Typedefs</a></li>
|
||||
<li><a href="N_005fM2C.html#index-N_005fM2C-59"><code>N_M2C</code></a>: <a href="N_005fM2C.html#N_005fM2C">N_M2C</a></li>
|
||||
<li><a href="Macro-define-and-undefine.html#index-N_005fMAC_005fDEFINE-51"><code>N_MAC_DEFINE</code></a>: <a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a></li>
|
||||
<li><a href="Macro-define-and-undefine.html#index-N_005fMAC_005fUNDEF-52"><code>N_MAC_UNDEF</code></a>: <a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a></li>
|
||||
<li><a href="Main-Program.html#index-N_005fMAIN-1"><code>N_MAIN</code></a>: <a href="Main-Program.html#Main-Program">Main Program</a></li>
|
||||
<li><a href="N_005fMOD2.html#index-N_005fMOD2-67"><code>N_MOD2</code></a>: <a href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a></li>
|
||||
<li><a href="Gould.html#index-N_005fNBBSS-77"><code>N_NBBSS</code></a>: <a href="Gould.html#Gould">Gould</a></li>
|
||||
<li><a href="Gould.html#index-N_005fNBDATA-76"><code>N_NBDATA</code></a>: <a href="Gould.html#Gould">Gould</a></li>
|
||||
<li><a href="Gould.html#index-N_005fNBLCS-79"><code>N_NBLCS</code></a>: <a href="Gould.html#Gould">Gould</a></li>
|
||||
<li><a href="Gould.html#index-N_005fNBSTS-78"><code>N_NBSTS</code></a>: <a href="Gould.html#Gould">Gould</a></li>
|
||||
<li><a href="Gould.html#index-N_005fNBTEXT-75"><code>N_NBTEXT</code></a>: <a href="Gould.html#Gould">Gould</a></li>
|
||||
<li><a href="N_005fNOMAP.html#index-N_005fNOMAP-57"><code>N_NOMAP</code></a>: <a href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a></li>
|
||||
<li><a href="N_005fNSYMS.html#index-N_005fNSYMS-55"><code>N_NSYMS</code></a>: <a href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a></li>
|
||||
<li><a href="N_005fPC.html#index-N_005fPC-53"><code>N_PC</code></a>: <a href="N_005fPC.html#N_005fPC">N_PC</a></li>
|
||||
<li><a href="Parameters.html#index-N_005fPSYM-44"><code>N_PSYM</code></a>: <a href="Parameters.html#Parameters">Parameters</a></li>
|
||||
<li><a href="Block-Structure.html#index-N_005fRBRAC-19"><code>N_RBRAC</code></a>: <a href="Block-Structure.html#Block-Structure">Block Structure</a></li>
|
||||
<li><a href="Statics.html#index-N_005fROSYM-40"><code>N_ROSYM</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Register-Variables.html#index-N_005fRSYM-29"><code>N_RSYM</code></a>: <a href="Register-Variables.html#Register-Variables">Register Variables</a></li>
|
||||
<li><a href="Register-Parameters.html#index-N_005fRSYM_002c-for-parameters-47"><code>N_RSYM, for parameters</code></a>: <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a></li>
|
||||
<li><a href="N_005fSCOPE.html#index-N_005fSCOPE-73"><code>N_SCOPE</code></a>: <a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a></li>
|
||||
<li><a href="Line-Numbers.html#index-N_005fSLINE-10"><code>N_SLINE</code></a>: <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></li>
|
||||
<li><a href="Source-Files.html#index-N_005fSO-2"><code>N_SO</code></a>: <a href="Source-Files.html#Source-Files">Source Files</a></li>
|
||||
<li><a href="Include-Files.html#index-N_005fSOL-4"><code>N_SOL</code></a>: <a href="Include-Files.html#Include-Files">Include Files</a></li>
|
||||
<li><a href="N_005fSSYM.html#index-N_005fSSYM-71"><code>N_SSYM</code></a>: <a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a></li>
|
||||
<li><a href="Statics.html#index-N_005fSTSYM-37"><code>N_STSYM</code></a>: <a href="Statics.html#Statics">Statics</a></li>
|
||||
<li><a href="Procedures.html#index-N_005fSTSYM_002c-for-functions-_0028Sun-acc_0029-15"><code>N_STSYM, for functions (Sun acc)</code></a>: <a href="Procedures.html#Procedures">Procedures</a></li>
|
||||
</ul></body></html>
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Traditional Builtin Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Builtin-Types.html#Builtin-Types" title="Builtin Types">
|
||||
<link rel="next" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" title="Builtin Type Descriptors">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Traditional-Builtin-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Builtin-Types.html#Builtin-Types">Builtin Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">5.1.1 Traditional Builtin Types</h4>
|
||||
|
||||
<p>This is the traditional, convoluted method for defining builtin types.
|
||||
There are several classes of such type definitions: integer, floating
|
||||
point, and <code>void</code>.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Traditional-Integer-Types.html#Traditional-Integer-Types">Traditional Integer Types</a>
|
||||
<li><a accesskey="2" href="Traditional-Other-Types.html#Traditional-Other-Types">Traditional Other Types</a>
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Traditional Integer Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" title="Traditional Builtin Types">
|
||||
<link rel="next" href="Traditional-Other-Types.html#Traditional-Other-Types" title="Traditional Other Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Traditional-Integer-Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Traditional-Other-Types.html#Traditional-Other-Types">Traditional Other Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h5 class="subsubsection">5.1.1.1 Traditional Integer Types</h5>
|
||||
|
||||
<p>Often types are defined as subranges of themselves. If the bounding values
|
||||
fit within an <code>int</code>, then they are given normally. For example:
|
||||
|
||||
<pre class="example"> .stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0 # <span class="roman">128 is N_LSYM</span>
|
||||
.stabs "char:t2=r2;0;127;",128,0,0,0
|
||||
</pre>
|
||||
<p>Builtin types can also be described as subranges of <code>int</code>:
|
||||
|
||||
<pre class="example"> .stabs "unsigned short:t6=r1;0;65535;",128,0,0,0
|
||||
</pre>
|
||||
<p>If the lower bound of a subrange is 0 and the upper bound is -1,
|
||||
the type is an unsigned integral type whose bounds are too
|
||||
big to describe in an <code>int</code>. Traditionally this is only used for
|
||||
<code>unsigned int</code> and <code>unsigned long</code>:
|
||||
|
||||
<pre class="example"> .stabs "unsigned int:t4=r1;0;-1;",128,0,0,0
|
||||
</pre>
|
||||
<p>For larger types, GCC 2.4.5 puts out bounds in octal, with one or more
|
||||
leading zeroes. In this case a negative bound consists of a number
|
||||
which is a 1 bit (for the sign bit) followed by a 0 bit for each bit in
|
||||
the number (except the sign bit), and a positive bound is one which is a
|
||||
1 bit for each bit in the number (except possibly the sign bit). All
|
||||
known versions of dbx and GDB version 4 accept this (at least in the
|
||||
sense of not refusing to process the file), but GDB 3.5 refuses to read
|
||||
the whole file containing such symbols. So GCC 2.3.3 did not output the
|
||||
proper size for these types. As an example of octal bounds, the string
|
||||
fields of the stabs for 64 bit integer types look like:
|
||||
|
||||
<!-- .stabs directives, etc., omitted to make it fit on the page. -->
|
||||
<pre class="example"> long int:t3=r1;001000000000000000000000;000777777777777777777777;
|
||||
long unsigned int:t5=r1;000000000000000000000000;001777777777777777777777;
|
||||
</pre>
|
||||
<p>If the lower bound of a subrange is 0 and the upper bound is negative,
|
||||
the type is an unsigned integral type whose size in bytes is the
|
||||
absolute value of the upper bound. I believe this is a Convex
|
||||
convention for <code>unsigned long long</code>.
|
||||
|
||||
<p>If the lower bound of a subrange is negative and the upper bound is 0,
|
||||
the type is a signed integral type whose size in bytes is
|
||||
the absolute value of the lower bound. I believe this is a Convex
|
||||
convention for <code>long long</code>. To distinguish this from a legitimate
|
||||
subrange, the type should be a subrange of itself. I'm not sure whether
|
||||
this is the case for Convex.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Traditional Other Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" title="Traditional Builtin Types">
|
||||
<link rel="prev" href="Traditional-Integer-Types.html#Traditional-Integer-Types" title="Traditional Integer Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Traditional-Other-Types"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Traditional-Integer-Types.html#Traditional-Integer-Types">Traditional Integer Types</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h5 class="subsubsection">5.1.1.2 Traditional Other Types</h5>
|
||||
|
||||
<p>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
|
||||
indicates the number of bytes in the type:
|
||||
|
||||
<pre class="example"> .stabs "float:t12=r1;4;0;",128,0,0,0
|
||||
.stabs "double:t13=r1;8;0;",128,0,0,0
|
||||
</pre>
|
||||
<p>However, GCC writes <code>long double</code> the same way it writes
|
||||
<code>double</code>, so there is no way to distinguish.
|
||||
|
||||
<pre class="example"> .stabs "long double:t14=r1;8;0;",128,0,0,0
|
||||
</pre>
|
||||
<p>Complex types are defined the same way as floating-point types; there is
|
||||
no way to distinguish a single-precision complex from a double-precision
|
||||
floating-point type.
|
||||
|
||||
<p>The C <code>void</code> type is defined as itself:
|
||||
|
||||
<pre class="example"> .stabs "void:t15=15",128,0,0,0
|
||||
</pre>
|
||||
<p>I'm not sure how a boolean type is represented.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Transformations On Global Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" title="Transformations On Symbol Tables">
|
||||
<link rel="prev" href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables" title="Transformations On Static Variables">
|
||||
<link rel="next" href="Stab-Section-Transformations.html#Stab-Section-Transformations" title="Stab Section Transformations">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Transformations-On-Global-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Stab-Section-Transformations.html#Stab-Section-Transformations">Stab Section Transformations</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables">Transformations On Static Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">Transformations On Symbol Tables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">7.2.2 Transformations on Global Variables</h4>
|
||||
|
||||
<p>Stabs for global variables do not contain location information. In
|
||||
this case, the debugger finds location information in the assembler or
|
||||
linker symbol table entry describing the variable. The source line:
|
||||
|
||||
<pre class="example"> char g_foo = 'c';
|
||||
</pre>
|
||||
<p class="noindent">generates the stab:
|
||||
|
||||
<pre class="example"> .stabs "g_foo:G2",32,0,0,0
|
||||
</pre>
|
||||
<p>The variable is represented by two symbol table entries in the object
|
||||
file (see below). The first one originated as a stab. The second one
|
||||
is an external symbol. The upper case ‘<samp><span class="samp">D</span></samp>’ signifies that the
|
||||
<code>n_type</code> field of the symbol table contains 7, <code>N_DATA</code> with
|
||||
local linkage. The stab's value is zero since the value is not used for
|
||||
<code>N_GSYM</code> stabs. The value of the linker symbol is the relocatable
|
||||
address corresponding to the variable.
|
||||
|
||||
<pre class="example"> 00000000 - 00 0000 GSYM g_foo:G2
|
||||
00000080 D _g_foo
|
||||
</pre>
|
||||
<p class="noindent">These entries as transformed by the linker. The linker symbol table
|
||||
entry now holds an absolute address:
|
||||
|
||||
<pre class="example"> 00000000 - 00 0000 GSYM g_foo:G2
|
||||
...
|
||||
0000e008 D _g_foo
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Transformations On Static Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" title="Transformations On Symbol Tables">
|
||||
<link rel="next" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" title="Transformations On Global Variables">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Transformations-On-Static-Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables">Transformations On Global Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">Transformations On Symbol Tables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="subsection">7.2.1 Transformations on Static Variables</h4>
|
||||
|
||||
<p>This source line defines a static variable at file scope:
|
||||
|
||||
<pre class="example"> static int s_g_repeat
|
||||
</pre>
|
||||
<p class="noindent">The following stab describes the symbol:
|
||||
|
||||
<pre class="example"> .stabs "s_g_repeat:S1",38,0,0,_s_g_repeat
|
||||
</pre>
|
||||
<p class="noindent">The assembler transforms the stab into this symbol table entry in the
|
||||
<samp><span class="file">.o</span></samp> file. The location is expressed as a data segment offset.
|
||||
|
||||
<pre class="example"> 00000084 - 00 0000 STSYM s_g_repeat:S1
|
||||
</pre>
|
||||
<p class="noindent">In the symbol table entry from the executable, the linker has made the
|
||||
relocatable address absolute.
|
||||
|
||||
<pre class="example"> 0000e00c - 00 0000 STSYM s_g_repeat:S1
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Transformations On Symbol Tables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Symbol-Tables.html#Symbol-Tables" title="Symbol Tables">
|
||||
<link rel="prev" href="Symbol-Table-Format.html#Symbol-Table-Format" title="Symbol Table Format">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Transformations-On-Symbol-Tables"></a>
|
||||
Previous: <a rel="previous" accesskey="p" href="Symbol-Table-Format.html#Symbol-Table-Format">Symbol Table Format</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">7.2 Transformations on Symbol Tables</h3>
|
||||
|
||||
<p>The linker concatenates object files and does fixups of externally
|
||||
defined symbols.
|
||||
|
||||
<p>You can see the transformations made on stab data by the assembler and
|
||||
linker by examining the symbol table after each pass of the build. To
|
||||
do this, use ‘<samp><span class="samp">nm -ap</span></samp>’, which dumps the symbol table, including
|
||||
debugging information, unsorted. For stab entries the columns are:
|
||||
<var>value</var>, <var>other</var>, <var>desc</var>, <var>type</var>, <var>string</var>. For
|
||||
assembler and linker symbols, the columns are: <var>value</var>, <var>type</var>,
|
||||
<var>string</var>.
|
||||
|
||||
<p>The low 5 bits of the stab type tell the linker how to relocate the
|
||||
value of the stab. Thus for stab types like <code>N_RSYM</code> and
|
||||
<code>N_LSYM</code>, where the value is an offset or a register number, the
|
||||
low 5 bits are <code>N_ABS</code>, which tells the linker not to relocate the
|
||||
value.
|
||||
|
||||
<p>Where the value of a stab contains an assembly language label,
|
||||
it is transformed by each build step. The assembler turns it into a
|
||||
relocatable address and the linker turns it into an absolute address.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables">Transformations On Static Variables</a>
|
||||
<li><a accesskey="2" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables">Transformations On Global Variables</a>
|
||||
<li><a accesskey="3" href="Stab-Section-Transformations.html#Stab-Section-Transformations">Stab Section Transformations</a>: For some object file formats,
|
||||
things are a bit different.
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Type Descriptors - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Symbol-Descriptors.html#Symbol-Descriptors" title="Symbol Descriptors">
|
||||
<link rel="next" href="Expanded-Reference.html#Expanded-Reference" title="Expanded Reference">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Type-Descriptors"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="appendix">Appendix C Table of Type Descriptors</h2>
|
||||
|
||||
<p>The type descriptor is the character which follows the type number and
|
||||
an equals sign. It specifies what kind of type is being defined.
|
||||
See <a href="String-Field.html#String-Field">String Field</a>, for more information about their use.
|
||||
|
||||
<dl>
|
||||
<dt><var>digit</var><dt><code>(</code><dd>Type reference; see <a href="String-Field.html#String-Field">String Field</a>.
|
||||
|
||||
<br><dt><code>-</code><dd>Reference to builtin type; see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>.
|
||||
|
||||
<br><dt><code>#</code><dd>Method (C<tt>++</tt>); see <a href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>.
|
||||
|
||||
<br><dt><code>*</code><dd>Pointer; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>&</code><dd>Reference (C<tt>++</tt>).
|
||||
|
||||
<br><dt><code>@</code><dd>Type Attributes (AIX); see <a href="String-Field.html#String-Field">String Field</a>. Member (class and variable)
|
||||
type (GNU C<tt>++</tt>); see <a href="Member-Type-Descriptor.html#Member-Type-Descriptor">Member Type Descriptor</a>.
|
||||
|
||||
<br><dt><code>a</code><dd>Array; see <a href="Arrays.html#Arrays">Arrays</a>.
|
||||
|
||||
<br><dt><code>A</code><dd>Open array; see <a href="Arrays.html#Arrays">Arrays</a>.
|
||||
|
||||
<br><dt><code>b</code><dd>Pascal space type (AIX); see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. Builtin integer
|
||||
type (Sun); see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>. Const and volatile
|
||||
qualified type (OS9000).
|
||||
|
||||
<br><dt><code>B</code><dd>Volatile-qualified type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>c</code><dd>Complex builtin type (AIX); see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>.
|
||||
Const-qualified type (OS9000).
|
||||
|
||||
<br><dt><code>C</code><dd>COBOL Picture type. See AIX documentation for details.
|
||||
|
||||
<br><dt><code>d</code><dd>File type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>D</code><dd>N-dimensional dynamic array; see <a href="Arrays.html#Arrays">Arrays</a>.
|
||||
|
||||
<br><dt><code>e</code><dd>Enumeration type; see <a href="Enumerations.html#Enumerations">Enumerations</a>.
|
||||
|
||||
<br><dt><code>E</code><dd>N-dimensional subarray; see <a href="Arrays.html#Arrays">Arrays</a>.
|
||||
|
||||
<br><dt><code>f</code><dd>Function type; see <a href="Function-Types.html#Function-Types">Function Types</a>.
|
||||
|
||||
<br><dt><code>F</code><dd>Pascal function parameter; see <a href="Function-Types.html#Function-Types">Function Types</a>
|
||||
|
||||
<br><dt><code>g</code><dd>Builtin floating point type; see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>.
|
||||
|
||||
<br><dt><code>G</code><dd>COBOL Group. See AIX documentation for details.
|
||||
|
||||
<br><dt><code>i</code><dd>Imported type (AIX); see <a href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>. Volatile-qualified
|
||||
type (OS9000).
|
||||
|
||||
<br><dt><code>k</code><dd>Const-qualified type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>K</code><dd>COBOL File Descriptor. See AIX documentation for details.
|
||||
|
||||
<br><dt><code>M</code><dd>Multiple instance type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>n</code><dd>String type; see <a href="Strings.html#Strings">Strings</a>.
|
||||
|
||||
<br><dt><code>N</code><dd>Stringptr; see <a href="Strings.html#Strings">Strings</a>.
|
||||
|
||||
<br><dt><code>o</code><dd>Opaque type; see <a href="Typedefs.html#Typedefs">Typedefs</a>.
|
||||
|
||||
<br><dt><code>p</code><dd>Procedure; see <a href="Function-Types.html#Function-Types">Function Types</a>.
|
||||
|
||||
<br><dt><code>P</code><dd>Packed array; see <a href="Arrays.html#Arrays">Arrays</a>.
|
||||
|
||||
<br><dt><code>r</code><dd>Range type; see <a href="Subranges.html#Subranges">Subranges</a>.
|
||||
|
||||
<br><dt><code>R</code><dd>Builtin floating type; see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a> (Sun). Pascal
|
||||
subroutine parameter; see <a href="Function-Types.html#Function-Types">Function Types</a> (AIX). Detecting this
|
||||
conflict is possible with careful parsing (hint: a Pascal subroutine
|
||||
parameter type will always contain a comma, and a builtin type
|
||||
descriptor never will).
|
||||
|
||||
<br><dt><code>s</code><dd>Structure type; see <a href="Structures.html#Structures">Structures</a>.
|
||||
|
||||
<br><dt><code>S</code><dd>Set type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>.
|
||||
|
||||
<br><dt><code>u</code><dd>Union; see <a href="Unions.html#Unions">Unions</a>.
|
||||
|
||||
<br><dt><code>v</code><dd>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.
|
||||
|
||||
<br><dt><code>w</code><dd>Wide character; see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>.
|
||||
|
||||
<br><dt><code>x</code><dd>Cross-reference; see <a href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>.
|
||||
|
||||
<br><dt><code>Y</code><dd>Used by IBM's xlC C<tt>++</tt> compiler (for structures, I think).
|
||||
|
||||
<br><dt><code>z</code><dd>gstring; see <a href="Strings.html#Strings">Strings</a>.
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Typedefs - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Structures.html#Structures" title="Structures">
|
||||
<link rel="next" href="Unions.html#Unions" title="Unions">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Typedefs"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Unions.html#Unions">Unions</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Structures.html#Structures">Structures</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.9 Giving a Type a Name</h3>
|
||||
|
||||
<p><a name="index-N_005fLSYM_002c-for-types-49"></a><a name="index-C_005fDECL_002c-for-types-50"></a>To give a type a name, use the ‘<samp><span class="samp">t</span></samp>’ symbol descriptor. The type
|
||||
is specified by the type information (see <a href="String-Field.html#String-Field">String Field</a>) for the stab.
|
||||
For example,
|
||||
|
||||
<pre class="example"> .stabs "s_typedef:t16",128,0,0,0 # <span class="roman">128 is N_LSYM</span>
|
||||
</pre>
|
||||
<p>specifies that <code>s_typedef</code> refers to type number 16. Such stabs
|
||||
have symbol type <code>N_LSYM</code> (or <code>C_DECL</code> for XCOFF). (The Sun
|
||||
documentation mentions using <code>N_GSYM</code> in some cases).
|
||||
|
||||
<p>If you are specifying the tag name for a structure, union, or
|
||||
enumeration, use the ‘<samp><span class="samp">T</span></samp>’ symbol descriptor instead. I believe C is
|
||||
the only language with this feature.
|
||||
|
||||
<p>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
|
||||
‘<samp><span class="samp">o</span></samp>’ 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
|
||||
descriptor used with a nameless stab (see <a href="String-Field.html#String-Field">String Field</a>)? There
|
||||
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
|
||||
comma and the type information, and the type is much like a generic
|
||||
pointer type—it has a known size but little else about it is
|
||||
specified.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Types - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Variables.html#Variables" title="Variables">
|
||||
<link rel="next" href="Macro-define-and-undefine.html#Macro-define-and-undefine" title="Macro define and undefine">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Types"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Variables.html#Variables">Variables</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">5 Defining Types</h2>
|
||||
|
||||
<p>The examples so far have described types as references to previously
|
||||
defined types, or defined in terms of subranges of or pointers to
|
||||
previously defined types. This chapter describes the other type
|
||||
descriptors that may follow the ‘<samp><span class="samp">=</span></samp>’ in a type definition.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Builtin-Types.html#Builtin-Types">Builtin Types</a>: Integers, floating point, void, etc.
|
||||
<li><a accesskey="2" href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>: Pointers, sets, files, etc.
|
||||
<li><a accesskey="3" href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>: Referring to a type not yet defined.
|
||||
<li><a accesskey="4" href="Subranges.html#Subranges">Subranges</a>: A type with a specific range.
|
||||
<li><a accesskey="5" href="Arrays.html#Arrays">Arrays</a>: An aggregate type of same-typed elements.
|
||||
<li><a accesskey="6" href="Strings.html#Strings">Strings</a>: Like an array but also has a length.
|
||||
<li><a accesskey="7" href="Enumerations.html#Enumerations">Enumerations</a>: Like an integer but the values have names.
|
||||
<li><a accesskey="8" href="Structures.html#Structures">Structures</a>: An aggregate type of different-typed elements.
|
||||
<li><a accesskey="9" href="Typedefs.html#Typedefs">Typedefs</a>: Giving a type a name.
|
||||
<li><a href="Unions.html#Unions">Unions</a>: Different types sharing storage.
|
||||
<li><a href="Function-Types.html#Function-Types">Function Types</a>
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Unions - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Types.html#Types" title="Types">
|
||||
<link rel="prev" href="Typedefs.html#Typedefs" title="Typedefs">
|
||||
<link rel="next" href="Function-Types.html#Function-Types" title="Function Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Unions"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Function-Types.html#Function-Types">Function Types</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Typedefs.html#Typedefs">Typedefs</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Types.html#Types">Types</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">5.10 Unions</h3>
|
||||
|
||||
<pre class="example"> union u_tag {
|
||||
int u_int;
|
||||
float u_float;
|
||||
char* u_char;
|
||||
} an_u;
|
||||
</pre>
|
||||
<p>This code generates a stab for a union tag and a stab for a union
|
||||
variable. Both use the <code>N_LSYM</code> stab type. If a union variable is
|
||||
scoped locally to the procedure in which it is defined, its stab is
|
||||
located immediately preceding the <code>N_LBRAC</code> for the procedure's block
|
||||
start.
|
||||
|
||||
<p>The stab for the union tag, however, is located preceding the code for
|
||||
the procedure in which it is defined. The stab type is <code>N_LSYM</code>. This
|
||||
would seem to imply that the union type is file scope, like the struct
|
||||
type <code>s_tag</code>. This is not true. The contents and position of the stab
|
||||
for <code>u_type</code> do not convey any information about its procedure local
|
||||
scope.
|
||||
|
||||
<!-- FIXME: phony line break. Can probably be fixed by using an example -->
|
||||
<!-- with fewer fields. -->
|
||||
<pre class="smallexample"> # <span class="roman">128 is N_LSYM</span>
|
||||
.stabs "u_tag:T23=u4u_int:1,0,32;u_float:12,0,32;u_char:21,0,32;;",
|
||||
128,0,0,0
|
||||
</pre>
|
||||
<p>The symbol descriptor ‘<samp><span class="samp">T</span></samp>’, following the ‘<samp><span class="samp">name:</span></samp>’ means that
|
||||
the stab describes an enumeration, structure, or union tag. The type
|
||||
descriptor ‘<samp><span class="samp">u</span></samp>’, following the ‘<samp><span class="samp">23=</span></samp>’ of the type definition,
|
||||
narrows it down to a union type definition. Following the ‘<samp><span class="samp">u</span></samp>’ is
|
||||
the number of bytes in the union. After that is a list of union element
|
||||
descriptions. Their format is ‘<samp><var>name</var><span class="samp">:</span><var>type</var><span class="samp">, </span><var>bit
|
||||
offset into the union</var><span class="samp">, </span><var>number of bytes for the element</var><span class="samp">;</span></samp>’.
|
||||
|
||||
<p>The stab for the union variable is:
|
||||
|
||||
<pre class="example"> .stabs "an_u:23",128,0,0,-20 # <span class="roman">128 is N_LSYM</span>
|
||||
</pre>
|
||||
<p>‘<samp><span class="samp">-20</span></samp>’ specifies where the variable is stored (see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>).
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Variables - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="prev" href="Constants.html#Constants" title="Constants">
|
||||
<link rel="next" href="Types.html#Types" title="Types">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Variables"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Types.html#Types">Types</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Constants.html#Constants">Constants</a>,
|
||||
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="chapter">4 Variables</h2>
|
||||
|
||||
<p>Different types of stabs describe the various ways that variables can be
|
||||
allocated: on the stack, globally, in registers, in common blocks,
|
||||
statically, or as arguments to a function.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Stack-Variables.html#Stack-Variables">Stack Variables</a>: Variables allocated on the stack.
|
||||
<li><a accesskey="2" href="Global-Variables.html#Global-Variables">Global Variables</a>: Variables used by more than one source file.
|
||||
<li><a accesskey="3" href="Register-Variables.html#Register-Variables">Register Variables</a>: Variables in registers.
|
||||
<li><a accesskey="4" href="Common-Blocks.html#Common-Blocks">Common Blocks</a>: Variables statically allocated together.
|
||||
<li><a accesskey="5" href="Statics.html#Statics">Statics</a>: Variables local to one source file.
|
||||
<li><a accesskey="6" href="Based-Variables.html#Based-Variables">Based Variables</a>: Fortran pointer based variables.
|
||||
<li><a accesskey="7" href="Parameters.html#Parameters">Parameters</a>: Variables for arguments to functions.
|
||||
</ul>
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Virtual Base Classes - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Inheritance.html#Inheritance" title="Inheritance">
|
||||
<link rel="next" href="Static-Members.html#Static-Members" title="Static Members">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Virtual-Base-Classes"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Static-Members.html#Static-Members">Static Members</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Inheritance.html#Inheritance">Inheritance</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.13 Virtual Base Classes</h3>
|
||||
|
||||
<p>A derived class object consists of a concatenation in memory of the data
|
||||
areas defined by each base class, starting with the leftmost and ending
|
||||
with the rightmost in the list of base classes. The exception to this
|
||||
rule is for virtual inheritance. In the example above, class <code>D</code>
|
||||
inherits virtually from base class <code>B</code>. This means that an
|
||||
instance of a <code>D</code> object will not contain its own <code>B</code> part but
|
||||
merely a pointer to a <code>B</code> part, known as a virtual base pointer.
|
||||
|
||||
<p>In a derived class stab, the base offset part of the derivation
|
||||
information, described above, shows how the base class parts are
|
||||
ordered. The base offset for a virtual base class is always given as 0.
|
||||
Notice that the base offset for <code>B</code> is given as 0 even though
|
||||
<code>B</code> is not the first base class. The first base class <code>A</code>
|
||||
starts at offset 0.
|
||||
|
||||
<p>The field information part of the stab for class <code>D</code> describes the field
|
||||
which is the pointer to the virtual base class <code>B</code>. The vbase pointer
|
||||
name is ‘<samp><span class="samp">$vb</span></samp>’ followed by a type reference to the virtual base class.
|
||||
Since the type id for <code>B</code> in this example is 25, the vbase pointer name
|
||||
is ‘<samp><span class="samp">$vb25</span></samp>’.
|
||||
|
||||
<!-- FIXME!! fake linebreaks below -->
|
||||
<pre class="smallexample"> .stabs "D:Tt31=s32!3,000,20;100,25;0264,28;$vb25:24,128;Ddat:1,
|
||||
160,32;A_virt::32=##1;:i;2A*-2147483647;20;;B_virt::32:i;
|
||||
2A*-2147483647;25;;C_virt::32:i;2A*-2147483647;28;;D_virt:
|
||||
:32:i;2A*-2147483646;31;;;~%20;",128,0,0,0
|
||||
</pre>
|
||||
<p>Following the name and a semicolon is a type reference describing the
|
||||
type of the virtual base class pointer, in this case 24. Type 24 was
|
||||
defined earlier as the type of the <code>B</code> class <code>this</code> pointer. The
|
||||
<code>this</code> pointer for a class is a pointer to the class type.
|
||||
|
||||
<pre class="example"> .stabs "this:P24=*25=xsB:",64,0,0,8
|
||||
</pre>
|
||||
<p>Finally the field offset part of the vbase pointer field description
|
||||
shows that the vbase pointer is the first field in the <code>D</code> object,
|
||||
before any data fields defined by the class. The layout of a <code>D</code>
|
||||
class object is a follows, <code>Adat</code> at 0, the vtable pointer for
|
||||
<code>A</code> at 32, <code>Cdat</code> at 64, the vtable pointer for C at 96, the
|
||||
virtual base pointer for <code>B</code> at 128, and <code>Ddat</code> at 160.
|
||||
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>Virtual Methods - STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="index.html#Top">
|
||||
<link rel="up" href="Cplusplus.html#Cplusplus" title="Cplusplus">
|
||||
<link rel="prev" href="Method-Modifiers.html#Method-Modifiers" title="Method Modifiers">
|
||||
<link rel="next" href="Inheritance.html#Inheritance" title="Inheritance">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Virtual-Methods"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Inheritance.html#Inheritance">Inheritance</a>,
|
||||
Previous: <a rel="previous" accesskey="p" href="Method-Modifiers.html#Method-Modifiers">Method Modifiers</a>,
|
||||
Up: <a rel="up" accesskey="u" href="Cplusplus.html#Cplusplus">Cplusplus</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h3 class="section">8.11 Virtual Methods</h3>
|
||||
|
||||
<p><< The following examples are based on a4.C >>
|
||||
|
||||
<p>The presence of virtual methods in a class definition adds additional
|
||||
data to the class description. The extra data is appended to the
|
||||
description of the virtual method and to the end of the class
|
||||
description. Consider the class definition below:
|
||||
|
||||
<pre class="example"> class A {
|
||||
public:
|
||||
int Adat;
|
||||
virtual int A_virt (int arg) { return arg; };
|
||||
};
|
||||
</pre>
|
||||
<p>This results in the stab below describing class A. It defines a new
|
||||
type (20) which is an 8 byte structure. The first field of the class
|
||||
struct is ‘<samp><span class="samp">Adat</span></samp>’, an integer, starting at structure offset 0 and
|
||||
occupying 32 bits.
|
||||
|
||||
<p>The second field in the class struct is not explicitly defined by the
|
||||
C<tt>++</tt> class definition but is implied by the fact that the class
|
||||
contains a virtual method. This field is the vtable pointer. The
|
||||
name of the vtable pointer field starts with ‘<samp><span class="samp">$vf</span></samp>’ and continues with a
|
||||
type reference to the class it is part of. In this example the type
|
||||
reference for class A is 20 so the name of its vtable pointer field is
|
||||
‘<samp><span class="samp">$vf20</span></samp>’, followed by the usual colon.
|
||||
|
||||
<p>Next there is a type definition for the vtable pointer type (21).
|
||||
This is in turn defined as a pointer to another new type (22).
|
||||
|
||||
<p>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
|
||||
17. Type 17 was the vtable record type defined by the boilerplate C<tt>++</tt>
|
||||
type definitions, as shown earlier.
|
||||
|
||||
<p>The bit offset of the vtable pointer field is 32. The number of bits
|
||||
in the field are not specified when the field is a vtable pointer.
|
||||
|
||||
<p>Next is the method definition for the virtual member function <code>A_virt</code>.
|
||||
Its description starts out using the same format as the non-virtual
|
||||
member functions described above, except instead of a dot after the
|
||||
‘<samp><span class="samp">A</span></samp>’ there is an asterisk, indicating that the function is virtual.
|
||||
Since is is virtual some addition information is appended to the end
|
||||
of the method description.
|
||||
|
||||
<p>The first number represents the vtable index of the method. This is a
|
||||
32 bit unsigned number with the high bit set, followed by a
|
||||
semi-colon.
|
||||
|
||||
<p>The second number is a type reference to the first base class in the
|
||||
inheritance hierarchy defining the virtual member function. In this
|
||||
case the class stab describes a base class so the virtual function is
|
||||
not overriding any other definition of the method. Therefore the
|
||||
reference is to the type number of the class that the stab is
|
||||
describing (20).
|
||||
|
||||
<p>This is followed by three semi-colons. One marks the end of the
|
||||
current sub-section, one marks the end of the method field, and the
|
||||
third marks the end of the struct definition.
|
||||
|
||||
<p>For classes containing virtual functions the very last section of the
|
||||
string part of the stab holds a type reference to the first base
|
||||
class. This is preceded by ‘<samp><span class="samp">~%</span></samp>’ and followed by a final semi-colon.
|
||||
|
||||
<pre class="display"> .stabs "class_name(A):type_def(20)=sym_desc(struct)struct_bytes(8)
|
||||
field_name(Adat):type_ref(int),bit_offset(0),field_bits(32);
|
||||
field_name(A virt func ptr):type_def(21)=type_desc(ptr to)type_def(22)=
|
||||
sym_desc(array)index_type_ref(range of int from 0 to 1);
|
||||
elem_type_ref(vtbl elem type),
|
||||
bit_offset(32);
|
||||
meth_name(A_virt)::typedef(23)=sym_desc(method)returning(int);
|
||||
:arg_type(int),protection(public)normal(yes)virtual(yes)
|
||||
vtable_index(1);class_first_defining(A);;;~%first_base(A);",
|
||||
N_LSYM,NIL,NIL,NIL
|
||||
</pre>
|
||||
<!-- FIXME: bogus line break. -->
|
||||
<pre class="example"> .stabs "A:t20=s8Adat:1,0,32;$vf20:21=*22=ar1;0;1;17,32;
|
||||
A_virt::23=##1;:i;2A*-2147483647;20;;;~%20;",128,0,0,0
|
||||
</pre>
|
||||
</body></html>
|
||||
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>STABS</title>
|
||||
<meta http-equiv="Content-Type" content="text/html">
|
||||
<meta name="description" content="STABS">
|
||||
<meta name="generator" content="makeinfo 4.11">
|
||||
<link title="Top" rel="start" href="#Top">
|
||||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||||
<!--
|
||||
Copyright (C) 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".-->
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<style type="text/css"><!--
|
||||
pre.display { font-family:inherit }
|
||||
pre.format { font-family:inherit }
|
||||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||||
pre.smallexample { font-size:smaller }
|
||||
pre.smalllisp { font-size:smaller }
|
||||
span.sc { font-variant:small-caps }
|
||||
span.roman { font-family:serif; font-weight:normal; }
|
||||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
This document describes the stabs debugging symbol tables.
|
||||
|
||||
<p>Copyright © 1992-2013 Free Software Foundation, Inc.
|
||||
Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
|
||||
and David MacKenzie.
|
||||
|
||||
<p>Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled “GNU
|
||||
Free Documentation License”.
|
||||
|
||||
<div class="node">
|
||||
<p>
|
||||
<a name="Top"></a>
|
||||
Next: <a rel="next" accesskey="n" href="Overview.html#Overview">Overview</a>,
|
||||
Up: <a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h2 class="unnumbered">The "stabs" representation of debugging information</h2>
|
||||
|
||||
<p>This document describes the stabs debugging format.
|
||||
|
||||
<ul class="menu">
|
||||
<li><a accesskey="1" href="Overview.html#Overview">Overview</a>: Overview of stabs
|
||||
<li><a accesskey="2" href="Program-Structure.html#Program-Structure">Program Structure</a>: Encoding of the structure of the program
|
||||
<li><a accesskey="3" href="Constants.html#Constants">Constants</a>: Constants
|
||||
<li><a accesskey="4" href="Variables.html#Variables">Variables</a>
|
||||
<li><a accesskey="5" href="Types.html#Types">Types</a>: Type definitions
|
||||
<li><a accesskey="6" href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a>: Representation of #define and #undef
|
||||
<li><a accesskey="7" href="Symbol-Tables.html#Symbol-Tables">Symbol Tables</a>: Symbol information in symbol tables
|
||||
<li><a accesskey="8" href="Cplusplus.html#Cplusplus">Cplusplus</a>: Stabs specific to C++
|
||||
<li><a accesskey="9" href="Stab-Types.html#Stab-Types">Stab Types</a>: Symbol types in a.out files
|
||||
<li><a href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>: Table of symbol descriptors
|
||||
<li><a href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>: Table of type descriptors
|
||||
<li><a href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>: Reference information by stab type
|
||||
<li><a href="Questions.html#Questions">Questions</a>: Questions and anomalies
|
||||
<li><a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>: In some object file formats, stabs are
|
||||
in sections.
|
||||
<li><a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>: The license for this documentation
|
||||
<li><a href="Symbol-Types-Index.html#Symbol-Types-Index">Symbol Types Index</a>: Index of symbolic stab symbol type names.
|
||||
</ul>
|
||||
|
||||
<div class="contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<ul>
|
||||
<li><a name="toc_Top" href="index.html#Top">The "stabs" representation of debugging information</a>
|
||||
<li><a name="toc_Overview" href="Overview.html#Overview">1 Overview of Stabs</a>
|
||||
<ul>
|
||||
<li><a href="Flow.html#Flow">1.1 Overview of Debugging Information Flow</a>
|
||||
<li><a href="Stabs-Format.html#Stabs-Format">1.2 Overview of Stab Format</a>
|
||||
<li><a href="String-Field.html#String-Field">1.3 The String Field</a>
|
||||
<li><a href="C-Example.html#C-Example">1.4 A Simple Example in C Source</a>
|
||||
<li><a href="Assembly-Code.html#Assembly-Code">1.5 The Simple Example at the Assembly Level</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Program-Structure" href="Program-Structure.html#Program-Structure">2 Encoding the Structure of the Program</a>
|
||||
<ul>
|
||||
<li><a href="Main-Program.html#Main-Program">2.1 Main Program</a>
|
||||
<li><a href="Source-Files.html#Source-Files">2.2 Paths and Names of the Source Files</a>
|
||||
<li><a href="Include-Files.html#Include-Files">2.3 Names of Include Files</a>
|
||||
<li><a href="Line-Numbers.html#Line-Numbers">2.4 Line Numbers</a>
|
||||
<li><a href="Procedures.html#Procedures">2.5 Procedures</a>
|
||||
<li><a href="Nested-Procedures.html#Nested-Procedures">2.6 Nested Procedures</a>
|
||||
<li><a href="Block-Structure.html#Block-Structure">2.7 Block Structure</a>
|
||||
<li><a href="Alternate-Entry-Points.html#Alternate-Entry-Points">2.8 Alternate Entry Points</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Constants" href="Constants.html#Constants">3 Constants</a>
|
||||
<li><a name="toc_Variables" href="Variables.html#Variables">4 Variables</a>
|
||||
<ul>
|
||||
<li><a href="Stack-Variables.html#Stack-Variables">4.1 Automatic Variables Allocated on the Stack</a>
|
||||
<li><a href="Global-Variables.html#Global-Variables">4.2 Global Variables</a>
|
||||
<li><a href="Register-Variables.html#Register-Variables">4.3 Register Variables</a>
|
||||
<li><a href="Common-Blocks.html#Common-Blocks">4.4 Common Blocks</a>
|
||||
<li><a href="Statics.html#Statics">4.5 Static Variables</a>
|
||||
<li><a href="Based-Variables.html#Based-Variables">4.6 Fortran Based Variables</a>
|
||||
<li><a href="Parameters.html#Parameters">4.7 Parameters</a>
|
||||
<ul>
|
||||
<li><a href="Register-Parameters.html#Register-Parameters">4.7.1 Passing Parameters in Registers</a>
|
||||
<li><a href="Local-Variable-Parameters.html#Local-Variable-Parameters">4.7.2 Storing Parameters as Local Variables</a>
|
||||
<li><a href="Reference-Parameters.html#Reference-Parameters">4.7.3 Passing Parameters by Reference</a>
|
||||
<li><a href="Conformant-Arrays.html#Conformant-Arrays">4.7.4 Passing Conformant Array Parameters</a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
<li><a name="toc_Types" href="Types.html#Types">5 Defining Types</a>
|
||||
<ul>
|
||||
<li><a href="Builtin-Types.html#Builtin-Types">5.1 Builtin Types</a>
|
||||
<ul>
|
||||
<li><a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">5.1.1 Traditional Builtin Types</a>
|
||||
<ul>
|
||||
<li><a href="Traditional-Integer-Types.html#Traditional-Integer-Types">5.1.1.1 Traditional Integer Types</a>
|
||||
<li><a href="Traditional-Other-Types.html#Traditional-Other-Types">5.1.1.2 Traditional Other Types</a>
|
||||
</li></ul>
|
||||
<li><a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">5.1.2 Defining Builtin Types Using Builtin Type Descriptors</a>
|
||||
<li><a href="Negative-Type-Numbers.html#Negative-Type-Numbers">5.1.3 Negative Type Numbers</a>
|
||||
</li></ul>
|
||||
<li><a href="Miscellaneous-Types.html#Miscellaneous-Types">5.2 Miscellaneous Types</a>
|
||||
<li><a href="Cross_002dReferences.html#Cross_002dReferences">5.3 Cross-References to Other Types</a>
|
||||
<li><a href="Subranges.html#Subranges">5.4 Subrange Types</a>
|
||||
<li><a href="Arrays.html#Arrays">5.5 Array Types</a>
|
||||
<li><a href="Strings.html#Strings">5.6 Strings</a>
|
||||
<li><a href="Enumerations.html#Enumerations">5.7 Enumerations</a>
|
||||
<li><a href="Structures.html#Structures">5.8 Structures</a>
|
||||
<li><a href="Typedefs.html#Typedefs">5.9 Giving a Type a Name</a>
|
||||
<li><a href="Unions.html#Unions">5.10 Unions</a>
|
||||
<li><a href="Function-Types.html#Function-Types">5.11 Function Types</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Macro-define-and-undefine" href="Macro-define-and-undefine.html#Macro-define-and-undefine">6 Representation of #define and #undef</a>
|
||||
<li><a name="toc_Symbol-Tables" href="Symbol-Tables.html#Symbol-Tables">7 Symbol Information in Symbol Tables</a>
|
||||
<ul>
|
||||
<li><a href="Symbol-Table-Format.html#Symbol-Table-Format">7.1 Symbol Table Format</a>
|
||||
<li><a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">7.2 Transformations on Symbol Tables</a>
|
||||
<ul>
|
||||
<li><a href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables">7.2.1 Transformations on Static Variables</a>
|
||||
<li><a href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables">7.2.2 Transformations on Global Variables</a>
|
||||
<li><a href="Stab-Section-Transformations.html#Stab-Section-Transformations">7.2.3 Transformations of Stabs in separate sections</a>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
<li><a name="toc_Cplusplus" href="Cplusplus.html#Cplusplus">8 GNU C<tt>++</tt> Stabs</a>
|
||||
<ul>
|
||||
<li><a href="Class-Names.html#Class-Names">8.1 C<tt>++</tt> Class Names</a>
|
||||
<li><a href="Nested-Symbols.html#Nested-Symbols">8.2 Defining a Symbol Within Another Type</a>
|
||||
<li><a href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types">8.3 Basic Types For C<tt>++</tt></a>
|
||||
<li><a href="Simple-Classes.html#Simple-Classes">8.4 Simple Class Definition</a>
|
||||
<li><a href="Class-Instance.html#Class-Instance">8.5 Class Instance</a>
|
||||
<li><a href="Methods.html#Methods">8.6 Method Definition</a>
|
||||
<li><a href="Method-Type-Descriptor.html#Method-Type-Descriptor">8.7 The ‘<samp><span class="samp">#</span></samp>’ Type Descriptor</a>
|
||||
<li><a href="Member-Type-Descriptor.html#Member-Type-Descriptor">8.8 The ‘<samp><span class="samp">@</span></samp>’ Type Descriptor</a>
|
||||
<li><a href="Protections.html#Protections">8.9 Protections</a>
|
||||
<li><a href="Method-Modifiers.html#Method-Modifiers">8.10 Method Modifiers (<code>const</code>, <code>volatile</code>, <code>const volatile</code>)</a>
|
||||
<li><a href="Virtual-Methods.html#Virtual-Methods">8.11 Virtual Methods</a>
|
||||
<li><a href="Inheritance.html#Inheritance">8.12 Inheritance</a>
|
||||
<li><a href="Virtual-Base-Classes.html#Virtual-Base-Classes">8.13 Virtual Base Classes</a>
|
||||
<li><a href="Static-Members.html#Static-Members">8.14 Static Members</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Stab-Types" href="Stab-Types.html#Stab-Types">Appendix A Table of Stab Types</a>
|
||||
<ul>
|
||||
<li><a href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types">A.1 Non-Stab Symbol Types</a>
|
||||
<li><a href="Stab-Symbol-Types.html#Stab-Symbol-Types">A.2 Stab Symbol Types</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Symbol-Descriptors" href="Symbol-Descriptors.html#Symbol-Descriptors">Appendix B Table of Symbol Descriptors</a>
|
||||
<li><a name="toc_Type-Descriptors" href="Type-Descriptors.html#Type-Descriptors">Appendix C Table of Type Descriptors</a>
|
||||
<li><a name="toc_Expanded-Reference" href="Expanded-Reference.html#Expanded-Reference">Appendix D Expanded Reference by Stab Type</a>
|
||||
<ul>
|
||||
<li><a href="N_005fPC.html#N_005fPC">D.1 N_PC</a>
|
||||
<li><a href="N_005fNSYMS.html#N_005fNSYMS">D.2 N_NSYMS</a>
|
||||
<li><a href="N_005fNOMAP.html#N_005fNOMAP">D.3 N_NOMAP</a>
|
||||
<li><a href="N_005fM2C.html#N_005fM2C">D.4 N_M2C</a>
|
||||
<li><a href="N_005fBROWS.html#N_005fBROWS">D.5 N_BROWS</a>
|
||||
<li><a href="N_005fDEFD.html#N_005fDEFD">D.6 N_DEFD</a>
|
||||
<li><a href="N_005fEHDECL.html#N_005fEHDECL">D.7 N_EHDECL</a>
|
||||
<li><a href="N_005fMOD2.html#N_005fMOD2">D.8 N_MOD2</a>
|
||||
<li><a href="N_005fCATCH.html#N_005fCATCH">D.9 N_CATCH</a>
|
||||
<li><a href="N_005fSSYM.html#N_005fSSYM">D.10 N_SSYM</a>
|
||||
<li><a href="N_005fSCOPE.html#N_005fSCOPE">D.11 N_SCOPE</a>
|
||||
<li><a href="Gould.html#Gould">D.12 Non-base registers on Gould systems</a>
|
||||
<li><a href="N_005fLENG.html#N_005fLENG">D.13 N_LENG</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_Questions" href="Questions.html#Questions">Appendix E Questions and Anomalies</a>
|
||||
<li><a name="toc_Stab-Sections" href="Stab-Sections.html#Stab-Sections">Appendix F Using Stabs in Their Own Sections</a>
|
||||
<ul>
|
||||
<li><a href="Stab-Section-Basics.html#Stab-Section-Basics">F.1 How to Embed Stabs in Sections</a>
|
||||
<li><a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">F.2 Having the Linker Relocate Stabs in ELF</a>
|
||||
</li></ul>
|
||||
<li><a name="toc_GNU-Free-Documentation-License" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">Appendix G GNU Free Documentation License</a>
|
||||
<li><a name="toc_Symbol-Types-Index" href="Symbol-Types-Index.html#Symbol-Types-Index">Symbol Types Index</a>
|
||||
</li></ul>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue