diff options
Diffstat (limited to 'share/doc/stabs')
93 files changed, 11867 insertions, 0 deletions
diff --git a/share/doc/stabs/Alternate-Entry-Points.html b/share/doc/stabs/Alternate-Entry-Points.html new file mode 100644 index 0000000..954db83 --- /dev/null +++ b/share/doc/stabs/Alternate-Entry-Points.html @@ -0,0 +1,87 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Alternate Entry Points</title> + +<meta name="description" content="STABS: Alternate Entry Points"> +<meta name="keywords" content="STABS: Alternate Entry Points"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Constants.html#Constants" rel="next" title="Constants"> +<link href="Block-Structure.html#Block-Structure" rel="previous" title="Block Structure"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Alternate-Entry-Points"></a> +<div class="header"> +<p> +Previous: <a href="Block-Structure.html#Block-Structure" accesskey="p" rel="previous">Block Structure</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Alternate-Entry-Points-1"></a> +<h3 class="section">2.8 Alternate Entry Points</h3> + +<a name="index-N_005fENTRY"></a> +<a name="index-C_005fENTRY"></a> +<p>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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Arrays.html b/share/doc/stabs/Arrays.html new file mode 100644 index 0000000..58ab68a --- /dev/null +++ b/share/doc/stabs/Arrays.html @@ -0,0 +1,159 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Arrays</title> + +<meta name="description" content="STABS: Arrays"> +<meta name="keywords" content="STABS: Arrays"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Strings.html#Strings" rel="next" title="Strings"> +<link href="Subranges.html#Subranges" rel="previous" title="Subranges"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Arrays"></a> +<div class="header"> +<p> +Next: <a href="Strings.html#Strings" accesskey="n" rel="next">Strings</a>, Previous: <a href="Subranges.html#Subranges" accesskey="p" rel="previous">Subranges</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Array-Types"></a> +<h3 class="section">5.5 Array Types</h3> + +<p>Arrays use the ‘<samp>a</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> +<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>=</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>ar1;1;10;ar1;1;10;4</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> +<p>The type of the index is often a range type, expressed as the type +descriptor ‘<samp>r</samp>’ and some parameters. It defines the size of the +array. In the example below, the range ‘<samp>r1;0;2;</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> +<p>For example, the definition: +</p> +<div class="example"> +<pre class="example">char char_vec[3] = {'a','b','c'}; +</pre></div> + +<p>produces the output: +</p> +<div class="example"> +<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></div> + +<p>If an array is <em>packed</em>, 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>P</samp>’ type descriptor instead of ‘<samp>a</samp>’. Other than specifying a +packed array, ‘<samp>P</samp>’ is identical to ‘<samp>a</samp>’. +</p> +<p>An open array is represented by the ‘<samp>A</samp>’ type descriptor followed by +type information specifying the type of the array elements. +</p> +<p>An N-dimensional dynamic array is represented by +</p> +<div class="example"> +<pre class="example">D <var>dimensions</var> ; <var>type-information</var> +</pre></div> + +<p><var>dimensions</var> is the number of dimensions; <var>type-information</var> +specifies the type of the array elements. +</p> +<p>A subarray of an N-dimensional array is represented by +</p> +<div class="example"> +<pre class="example">E <var>dimensions</var> ; <var>type-information</var> +</pre></div> + +<p><var>dimensions</var> is the number of dimensions; <var>type-information</var> +specifies the type of the array elements. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Strings.html#Strings" accesskey="n" rel="next">Strings</a>, Previous: <a href="Subranges.html#Subranges" accesskey="p" rel="previous">Subranges</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Assembly-Code.html b/share/doc/stabs/Assembly-Code.html new file mode 100644 index 0000000..30d13b7 --- /dev/null +++ b/share/doc/stabs/Assembly-Code.html @@ -0,0 +1,133 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Assembly Code</title> + +<meta name="description" content="STABS: Assembly Code"> +<meta name="keywords" content="STABS: Assembly Code"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Overview.html#Overview" rel="up" title="Overview"> +<link href="Program-Structure.html#Program-Structure" rel="next" title="Program Structure"> +<link href="C-Example.html#C-Example" rel="previous" title="C Example"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Assembly-Code"></a> +<div class="header"> +<p> +Previous: <a href="C-Example.html#C-Example" accesskey="p" rel="previous">C Example</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="The-Simple-Example-at-the-Assembly-Level"></a> +<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. +</p> +<div class="example"> +<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></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Based-Variables.html b/share/doc/stabs/Based-Variables.html new file mode 100644 index 0000000..0451c50 --- /dev/null +++ b/share/doc/stabs/Based-Variables.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Based Variables</title> + +<meta name="description" content="STABS: Based Variables"> +<meta name="keywords" content="STABS: Based Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Parameters.html#Parameters" rel="next" title="Parameters"> +<link href="Statics.html#Statics" rel="previous" title="Statics"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Based-Variables"></a> +<div class="header"> +<p> +Next: <a href="Parameters.html#Parameters" accesskey="n" rel="next">Parameters</a>, Previous: <a href="Statics.html#Statics" accesskey="p" rel="previous">Statics</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Fortran-Based-Variables"></a> +<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>b</samp>’ symbol descriptor. +</p> +<p>For example, the Fortran declarations +</p> +<div class="example"> +<pre class="example">real foo, foo10(10), foo10_5(10,5) +pointer (foop, foo) +pointer (foo10p, foo10) +pointer (foo105p, foo10_5) +</pre></div> + +<p>produce the stabs +</p> +<div class="example"> +<pre class="example">foo:b6 +foo10:bar3;1;10;6 +foo10_5:bar3;1;5;ar3;1;10;6 +</pre></div> + +<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> +<p>The ‘<samp>b</samp>’ symbol descriptor is like ‘<samp>V</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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Basic-Cplusplus-Types.html b/share/doc/stabs/Basic-Cplusplus-Types.html new file mode 100644 index 0000000..5ca8cc3 --- /dev/null +++ b/share/doc/stabs/Basic-Cplusplus-Types.html @@ -0,0 +1,116 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Basic Cplusplus Types</title> + +<meta name="description" content="STABS: Basic Cplusplus Types"> +<meta name="keywords" content="STABS: Basic Cplusplus Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Simple-Classes.html#Simple-Classes" rel="next" title="Simple Classes"> +<link href="Nested-Symbols.html#Nested-Symbols" rel="previous" title="Nested Symbols"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Basic-Cplusplus-Types"></a> +<div class="header"> +<p> +Next: <a href="Simple-Classes.html#Simple-Classes" accesskey="n" rel="next">Simple Classes</a>, Previous: <a href="Nested-Symbols.html#Nested-Symbols" accesskey="p" rel="previous">Nested Symbols</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Basic-Types-For-C_002b_002b"></a> +<h3 class="section">8.3 Basic Types For C<tt>++</tt></h3> + +<p><< the examples that follow are based on a01.C >> +</p> + +<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> +<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> +<p><< In boilerplate $vtbl_ptr_type, what are the fields delta, +index, and delta2 used for? >> +</p> +<p>This basic type is present in all C<tt>++</tt> programs even if there are no +virtual methods defined. +</p> +<div class="display"> +<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></div> + +<div class="smallexample"> +<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></div> + +<div class="display"> +<pre class="display">.stabs "name:sym_dec(struct tag)type_ref($vtbl_ptr_type)",N_LSYM,NIL,NIL,NIL +</pre></div> + +<div class="example"> +<pre class="example">.stabs "$vtbl_ptr_type:T17",128,0,0,0 +</pre></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Block-Structure.html b/share/doc/stabs/Block-Structure.html new file mode 100644 index 0000000..6f31b61 --- /dev/null +++ b/share/doc/stabs/Block-Structure.html @@ -0,0 +1,105 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Block Structure</title> + +<meta name="description" content="STABS: Block Structure"> +<meta name="keywords" content="STABS: Block Structure"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Alternate-Entry-Points.html#Alternate-Entry-Points" rel="next" title="Alternate Entry Points"> +<link href="Nested-Procedures.html#Nested-Procedures" rel="previous" title="Nested Procedures"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Block-Structure"></a> +<div class="header"> +<p> +Next: <a href="Alternate-Entry-Points.html#Alternate-Entry-Points" accesskey="n" rel="next">Alternate Entry Points</a>, Previous: <a href="Nested-Procedures.html#Nested-Procedures" accesskey="p" rel="previous">Nested Procedures</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Block-Structure-1"></a> +<h3 class="section">2.7 Block Structure</h3> + +<a name="index-N_005fLBRAC"></a> +<a name="index-N_005fRBRAC"></a> +<p>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> +<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> +<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-_002ebb"></a> +<a name="index-_002ebe"></a> +<a name="index-C_005fBLOCK"></a> +<p>For XCOFF, block scope is indicated with <code>C_BLOCK</code> symbols. If the +name of the symbol is ‘<samp>.bb</samp>’, then it is the beginning of the block; +if the name of the symbol is ‘<samp>.be</samp>’; it is the end of the block. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Builtin-Type-Descriptors.html b/share/doc/stabs/Builtin-Type-Descriptors.html new file mode 100644 index 0000000..e621bfb --- /dev/null +++ b/share/doc/stabs/Builtin-Type-Descriptors.html @@ -0,0 +1,166 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Builtin Type Descriptors</title> + +<meta name="description" content="STABS: Builtin Type Descriptors"> +<meta name="keywords" content="STABS: Builtin Type Descriptors"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Builtin-Types.html#Builtin-Types" rel="up" title="Builtin Types"> +<link href="Negative-Type-Numbers.html#Negative-Type-Numbers" rel="next" title="Negative Type Numbers"> +<link href="Traditional-Other-Types.html#Traditional-Other-Types" rel="previous" title="Traditional Other Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Builtin-Type-Descriptors"></a> +<div class="header"> +<p> +Next: <a href="Negative-Type-Numbers.html#Negative-Type-Numbers" accesskey="n" rel="next">Negative Type Numbers</a>, Previous: <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="p" rel="previous">Traditional Builtin Types</a>, Up: <a href="Builtin-Types.html#Builtin-Types" accesskey="u" rel="up">Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Defining-Builtin-Types-Using-Builtin-Type-Descriptors"></a> +<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: +</p> +<dl compact="compact"> +<dt><code>b <var>signed</var> <var>char-flag</var> <var>width</var> ; <var>offset</var> ; <var>nbits</var> ;</code></dt> +<dd><p>Define an integral type. <var>signed</var> is ‘<samp>u</samp>’ for unsigned or +‘<samp>s</samp>’ for signed. <var>char-flag</var> is ‘<samp>c</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> +<p>Note that type descriptor ‘<samp>b</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>(</samp>’, or ‘<samp>-</samp>’ for a Pascal space type, or +‘<samp>u</samp>’ or ‘<samp>s</samp>’ for a builtin type. +</p> +</dd> +<dt><code>w</code></dt> +<dd><p>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>). +</p> +</dd> +<dt><code>R <var>fp-type</var> ; <var>bytes</var> ;</code></dt> +<dd><p>Define a floating point type. <var>fp-type</var> has one of the following values: +</p> +<dl compact="compact"> +<dt><code>1 (NF_SINGLE)</code></dt> +<dd><p>IEEE 32-bit (single precision) floating point format. +</p> +</dd> +<dt><code>2 (NF_DOUBLE)</code></dt> +<dd><p>IEEE 64-bit (double precision) floating point format. +</p> +</dd> +<dt><code>3 (NF_COMPLEX)</code></dt> +<dt><code>4 (NF_COMPLEX16)</code></dt> +<dt><code>5 (NF_COMPLEX32)</code></dt> +<dd><p>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?). +</p> +</dd> +<dt><code>6 (NF_LDOUBLE)</code></dt> +<dd><p>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). +</p></dd> +</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>. +</p> +</dd> +<dt><code>g <var>type-information</var> ; <var>nbits</var></code></dt> +<dd><p>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>). +</p> +</dd> +<dt><code>c <var>type-information</var> ; <var>nbits</var></code></dt> +<dd><p>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>). +</p></dd> +</dl> + +<p>The C <code>void</code> type is defined as a signed integral type 0 bits long: +</p><div class="example"> +<pre class="example">.stabs "void:t19=bs0;0;0",128,0,0,0 +</pre></div> +<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> +<p>I’m not sure how a boolean type is represented. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Negative-Type-Numbers.html#Negative-Type-Numbers" accesskey="n" rel="next">Negative Type Numbers</a>, Previous: <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="p" rel="previous">Traditional Builtin Types</a>, Up: <a href="Builtin-Types.html#Builtin-Types" accesskey="u" rel="up">Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Builtin-Types.html b/share/doc/stabs/Builtin-Types.html new file mode 100644 index 0000000..74cdb54 --- /dev/null +++ b/share/doc/stabs/Builtin-Types.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Builtin Types</title> + +<meta name="description" content="STABS: Builtin Types"> +<meta name="keywords" content="STABS: Builtin Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" rel="next" title="Traditional Builtin Types"> +<link href="Types.html#Types" rel="previous" title="Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Builtin-Types"></a> +<div class="header"> +<p> +Next: <a href="Miscellaneous-Types.html#Miscellaneous-Types" accesskey="n" rel="next">Miscellaneous Types</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Builtin-Types-1"></a> +<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> +<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>b</samp>’ and ‘<samp>R</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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="1">Traditional Builtin Types</a>:</td><td> </td><td align="left" valign="top">Put on your seat belts and prepare for kludgery +</td></tr> +<tr><td align="left" valign="top">• <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" accesskey="2">Builtin Type Descriptors</a>:</td><td> </td><td align="left" valign="top">Builtin types with special type descriptors +</td></tr> +<tr><td align="left" valign="top">• <a href="Negative-Type-Numbers.html#Negative-Type-Numbers" accesskey="3">Negative Type Numbers</a>:</td><td> </td><td align="left" valign="top">Builtin types using negative type numbers +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/C-Example.html b/share/doc/stabs/C-Example.html new file mode 100644 index 0000000..1e48c52 --- /dev/null +++ b/share/doc/stabs/C-Example.html @@ -0,0 +1,90 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: C Example</title> + +<meta name="description" content="STABS: C Example"> +<meta name="keywords" content="STABS: C Example"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Overview.html#Overview" rel="up" title="Overview"> +<link href="Assembly-Code.html#Assembly-Code" rel="next" title="Assembly Code"> +<link href="String-Field.html#String-Field" rel="previous" title="String Field"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="C-Example"></a> +<div class="header"> +<p> +Next: <a href="Assembly-Code.html#Assembly-Code" accesskey="n" rel="next">Assembly Code</a>, Previous: <a href="String-Field.html#String-Field" accesskey="p" rel="previous">String Field</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="A-Simple-Example-in-C-Source"></a> +<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: +</p> +<div class="example"> +<pre class="example">main() +{ + printf("Hello world"); +} +</pre></div> + +<p>When compiled with ‘<samp>-g</samp>’, the program above yields the following +<samp>.s</samp> file. Line numbers have been added to make it easier to refer +to parts of the <samp>.s</samp> file in the description of the stabs that +follows. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Class-Instance.html b/share/doc/stabs/Class-Instance.html new file mode 100644 index 0000000..203417a --- /dev/null +++ b/share/doc/stabs/Class-Instance.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Class Instance</title> + +<meta name="description" content="STABS: Class Instance"> +<meta name="keywords" content="STABS: Class Instance"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Methods.html#Methods" rel="next" title="Methods"> +<link href="Simple-Classes.html#Simple-Classes" rel="previous" title="Simple Classes"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Class-Instance"></a> +<div class="header"> +<p> +Next: <a href="Methods.html#Methods" accesskey="n" rel="next">Methods</a>, Previous: <a href="Simple-Classes.html#Simple-Classes" accesskey="p" rel="previous">Simple Classes</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Class-Instance-1"></a> +<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: +</p> +<div class="example"> +<pre class="example">main () { + baseA AbaseA; +} +</pre></div> + +<p>yields the following stab describing the class instance. It looks no +different from a standard C stab describing a local variable. +</p> +<div class="display"> +<pre class="display">.stabs "name:type_ref(baseA)", N_LSYM, NIL, NIL, frame_ptr_offset +</pre></div> + +<div class="example"> +<pre class="example">.stabs "AbaseA:20",128,0,0,-20 +</pre></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Class-Names.html b/share/doc/stabs/Class-Names.html new file mode 100644 index 0000000..4d21ede --- /dev/null +++ b/share/doc/stabs/Class-Names.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Class Names</title> + +<meta name="description" content="STABS: Class Names"> +<meta name="keywords" content="STABS: Class Names"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Nested-Symbols.html#Nested-Symbols" rel="next" title="Nested Symbols"> +<link href="Cplusplus.html#Cplusplus" rel="previous" title="Cplusplus"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Class-Names"></a> +<div class="header"> +<p> +Next: <a href="Nested-Symbols.html#Nested-Symbols" accesskey="n" rel="next">Nested Symbols</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="C_002b_002b-Class-Names"></a> +<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>t</samp>’ and ‘<samp>T</samp>’ symbol descriptors +(see <a href="Typedefs.html#Typedefs">Typedefs</a>). +</p> +<p>To save space, there is a special abbreviation for this case. If the +‘<samp>T</samp>’ symbol descriptor is followed by ‘<samp>t</samp>’, then the stab +defines both a type name and a tag. +</p> +<p>For example, the C<tt>++</tt> code +</p> +<div class="example"> +<pre class="example">struct foo {int x;}; +</pre></div> + +<p>can be represented as either +</p> +<div class="example"> +<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></div> + +<p>or +</p> +<div class="example"> +<pre class="example">.stabs "foo:Tt19=s4x:1,0,32;;",128,0,0,0 +</pre></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Common-Blocks.html b/share/doc/stabs/Common-Blocks.html new file mode 100644 index 0000000..074842d --- /dev/null +++ b/share/doc/stabs/Common-Blocks.html @@ -0,0 +1,102 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Common Blocks</title> + +<meta name="description" content="STABS: Common Blocks"> +<meta name="keywords" content="STABS: Common Blocks"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Statics.html#Statics" rel="next" title="Statics"> +<link href="Register-Variables.html#Register-Variables" rel="previous" title="Register Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Common-Blocks"></a> +<div class="header"> +<p> +Next: <a href="Statics.html#Statics" accesskey="n" rel="next">Statics</a>, Previous: <a href="Register-Variables.html#Register-Variables" accesskey="p" rel="previous">Register Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Common-Blocks-1"></a> +<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"></a> +<a name="index-N_005fECOMM"></a> +<a name="index-C_005fBCOMM"></a> +<a name="index-C_005fECOMM"></a> +<p>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"></a> +<a name="index-C_005fECOML"></a> +<p>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>V</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>. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Conformant-Arrays.html b/share/doc/stabs/Conformant-Arrays.html new file mode 100644 index 0000000..59fbe71 --- /dev/null +++ b/share/doc/stabs/Conformant-Arrays.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Conformant Arrays</title> + +<meta name="description" content="STABS: Conformant Arrays"> +<meta name="keywords" content="STABS: Conformant Arrays"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Parameters.html#Parameters" rel="up" title="Parameters"> +<link href="Types.html#Types" rel="next" title="Types"> +<link href="Reference-Parameters.html#Reference-Parameters" rel="previous" title="Reference Parameters"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Conformant-Arrays"></a> +<div class="header"> +<p> +Previous: <a href="Reference-Parameters.html#Reference-Parameters" accesskey="p" rel="previous">Reference Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Passing-Conformant-Array-Parameters"></a> +<h4 class="subsection">4.7.4 Passing Conformant Array Parameters</h4> + +<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>x</samp>’ for the array itself, and a ‘<samp>C</samp>’, which represents the size +of the array. The value of the ‘<samp>x</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>C</samp>’ stab is the offset in the +argument list where the size of the array (in elements? in bytes?) is +stored. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Constants.html b/share/doc/stabs/Constants.html new file mode 100644 index 0000000..7cb6bdb --- /dev/null +++ b/share/doc/stabs/Constants.html @@ -0,0 +1,151 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Constants</title> + +<meta name="description" content="STABS: Constants"> +<meta name="keywords" content="STABS: Constants"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Variables.html#Variables" rel="next" title="Variables"> +<link href="Alternate-Entry-Points.html#Alternate-Entry-Points" rel="previous" title="Alternate Entry Points"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Constants"></a> +<div class="header"> +<p> +Next: <a href="Variables.html#Variables" accesskey="n" rel="next">Variables</a>, Previous: <a href="Program-Structure.html#Program-Structure" accesskey="p" rel="previous">Program Structure</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Constants-1"></a> +<h2 class="chapter">3 Constants</h2> + +<p>The ‘<samp>c</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>=</samp>’ and one of the following: +</p> +<dl compact="compact"> +<dt><code>b <var>value</var></code></dt> +<dd><p>Boolean constant. <var>value</var> is a numeric value; I assume it is 0 for +false or 1 for true. +</p> +</dd> +<dt><code>c <var>value</var></code></dt> +<dd><p>Character constant. <var>value</var> is the numeric value of the constant. +</p> +</dd> +<dt><code>e <var>type-information</var> , <var>value</var></code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>i <var>value</var></code></dt> +<dd><p>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>e</samp>’ instead. +</p> +</dd> +<dt><code>r <var>value</var></code></dt> +<dd><p>Real constant. <var>value</var> is the real value, which can be ‘<samp>INF</samp>’ +(optionally preceded by a sign) for infinity, ‘<samp>QNAN</samp>’ for a quiet +NaN (not-a-number), or ‘<samp>SNAN</samp>’ for a signalling NaN. If it is a +normal number the format is that accepted by the C library function +<code>atof</code>. +</p> +</dd> +<dt><code>s <var>string</var></code></dt> +<dd><p>String constant. <var>string</var> is a string enclosed in either ‘<samp>'</samp>’ +(in which case ‘<samp>'</samp>’ characters within the string are represented as +‘<samp>\'</samp>’ or ‘<samp>"</samp>’ (in which case ‘<samp>"</samp>’ characters within the +string are represented as ‘<samp>\"</samp>’). +</p> +</dd> +<dt><code>S <var>type-information</var> , <var>elements</var> , <var>bits</var> , <var>pattern</var></code></dt> +<dd><p>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. +</p></dd> +</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> +<p>The above information is followed by ‘<samp>;</samp>’. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Variables.html#Variables" accesskey="n" rel="next">Variables</a>, Previous: <a href="Program-Structure.html#Program-Structure" accesskey="p" rel="previous">Program Structure</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Cplusplus.html b/share/doc/stabs/Cplusplus.html new file mode 100644 index 0000000..6361ff2 --- /dev/null +++ b/share/doc/stabs/Cplusplus.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Cplusplus</title> + +<meta name="description" content="STABS: Cplusplus"> +<meta name="keywords" content="STABS: Cplusplus"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Class-Names.html#Class-Names" rel="next" title="Class Names"> +<link href="Stab-Section-Transformations.html#Stab-Section-Transformations" rel="previous" title="Stab Section Transformations"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Cplusplus"></a> +<div class="header"> +<p> +Next: <a href="Stab-Types.html#Stab-Types" accesskey="n" rel="next">Stab Types</a>, Previous: <a href="Symbol-Tables.html#Symbol-Tables" accesskey="p" rel="previous">Symbol Tables</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="GNU-C_002b_002b-Stabs"></a> +<h2 class="chapter">8 GNU C<tt>++</tt> Stabs</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Class-Names.html#Class-Names" accesskey="1">Class Names</a>:</td><td> </td><td align="left" valign="top">C++ class names are both tags and typedefs. +</td></tr> +<tr><td align="left" valign="top">• <a href="Nested-Symbols.html#Nested-Symbols" accesskey="2">Nested Symbols</a>:</td><td> </td><td align="left" valign="top">C++ symbol names can be within other types. +</td></tr> +<tr><td align="left" valign="top">• <a href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" accesskey="3">Basic Cplusplus Types</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Simple-Classes.html#Simple-Classes" accesskey="4">Simple Classes</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Class-Instance.html#Class-Instance" accesskey="5">Class Instance</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Methods.html#Methods" accesskey="6">Methods</a>:</td><td> </td><td align="left" valign="top">Method definition +</td></tr> +<tr><td align="left" valign="top">• <a href="Method-Type-Descriptor.html#Method-Type-Descriptor" accesskey="7">Method Type Descriptor</a>:</td><td> </td><td align="left" valign="top">The ‘<samp>#</samp>’ type descriptor +</td></tr> +<tr><td align="left" valign="top">• <a href="Member-Type-Descriptor.html#Member-Type-Descriptor" accesskey="8">Member Type Descriptor</a>:</td><td> </td><td align="left" valign="top">The ‘<samp>@</samp>’ type descriptor +</td></tr> +<tr><td align="left" valign="top">• <a href="Protections.html#Protections" accesskey="9">Protections</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Method-Modifiers.html#Method-Modifiers">Method Modifiers</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Virtual-Methods.html#Virtual-Methods">Virtual Methods</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Inheritance.html#Inheritance">Inheritance</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Virtual-Base-Classes.html#Virtual-Base-Classes">Virtual Base Classes</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Static-Members.html#Static-Members">Static Members</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Cross_002dReferences.html b/share/doc/stabs/Cross_002dReferences.html new file mode 100644 index 0000000..6da60d1 --- /dev/null +++ b/share/doc/stabs/Cross_002dReferences.html @@ -0,0 +1,119 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Cross-References</title> + +<meta name="description" content="STABS: Cross-References"> +<meta name="keywords" content="STABS: Cross-References"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Subranges.html#Subranges" rel="next" title="Subranges"> +<link href="Miscellaneous-Types.html#Miscellaneous-Types" rel="previous" title="Miscellaneous Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Cross_002dReferences"></a> +<div class="header"> +<p> +Next: <a href="Subranges.html#Subranges" accesskey="n" rel="next">Subranges</a>, Previous: <a href="Miscellaneous-Types.html#Miscellaneous-Types" accesskey="p" rel="previous">Miscellaneous Types</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Cross_002dReferences-to-Other-Types"></a> +<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> +<p>Another way is with the ‘<samp>x</samp>’ type descriptor, which is followed by +‘<samp>s</samp>’ for a structure tag, ‘<samp>u</samp>’ for a union tag, or ‘<samp>e</samp>’ for +a enumerator tag, followed by the name of the tag, followed by ‘<samp>:</samp>’. +If the name contains ‘<samp>::</samp>’ between a ‘<samp><</samp>’ and ‘<samp>></samp>’ pair (for +C<tt>++</tt> templates), such a ‘<samp>::</samp>’ does not end the name—only a single +‘<samp>:</samp>’ ends the name; see <a href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>. +</p> +<p>For example, the following C declarations: +</p> +<div class="example"> +<pre class="example">struct foo; +struct foo *bar; +</pre></div> + +<p>produce: +</p> +<div class="example"> +<pre class="example">.stabs "bar:G16=*17=xsfoo:",32,0,0,0 +</pre></div> + +<p>Not all debuggers support the ‘<samp>x</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> +<p>Modula-2 imported types, at least on AIX, use the ‘<samp>i</samp>’ type +descriptor, which is followed by the name of the module from which the +type is imported, followed by ‘<samp>:</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>;</samp>’. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Subranges.html#Subranges" accesskey="n" rel="next">Subranges</a>, Previous: <a href="Miscellaneous-Types.html#Miscellaneous-Types" accesskey="p" rel="previous">Miscellaneous Types</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/ELF-Linker-Relocation.html b/share/doc/stabs/ELF-Linker-Relocation.html new file mode 100644 index 0000000..7eb4cc7 --- /dev/null +++ b/share/doc/stabs/ELF-Linker-Relocation.html @@ -0,0 +1,133 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: ELF Linker Relocation</title> + +<meta name="description" content="STABS: ELF Linker Relocation"> +<meta name="keywords" content="STABS: ELF Linker Relocation"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Stab-Sections.html#Stab-Sections" rel="up" title="Stab Sections"> +<link href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" rel="next" title="GNU Free Documentation License"> +<link href="Stab-Section-Basics.html#Stab-Section-Basics" rel="previous" title="Stab Section Basics"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="ELF-Linker-Relocation"></a> +<div class="header"> +<p> +Previous: <a href="Stab-Section-Basics.html#Stab-Section-Basics" accesskey="p" rel="previous">Stab Section Basics</a>, Up: <a href="Stab-Sections.html#Stab-Sections" accesskey="u" rel="up">Stab Sections</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Having-the-Linker-Relocate-Stabs-in-ELF"></a> +<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. While <small>GDB</small> no longer supports this hack +for Sun Stabs in ELF, this section is kept to document the issue. +</p> +<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>S</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> +<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>.o</samp> file without including any information about which part of a +<code>.stab</code> section comes from which <samp>.o</samp> file. The way GDB use to +do 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>../../gdb/main.c</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. +</p> +<hr> +<div class="header"> +<p> +Previous: <a href="Stab-Section-Basics.html#Stab-Section-Basics" accesskey="p" rel="previous">Stab Section Basics</a>, Up: <a href="Stab-Sections.html#Stab-Sections" accesskey="u" rel="up">Stab Sections</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Enumerations.html b/share/doc/stabs/Enumerations.html new file mode 100644 index 0000000..2a256f6 --- /dev/null +++ b/share/doc/stabs/Enumerations.html @@ -0,0 +1,129 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Enumerations</title> + +<meta name="description" content="STABS: Enumerations"> +<meta name="keywords" content="STABS: Enumerations"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Structures.html#Structures" rel="next" title="Structures"> +<link href="Strings.html#Strings" rel="previous" title="Strings"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Enumerations"></a> +<div class="header"> +<p> +Next: <a href="Structures.html#Structures" accesskey="n" rel="next">Structures</a>, Previous: <a href="Strings.html#Strings" accesskey="p" rel="previous">Strings</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Enumerations-1"></a> +<h3 class="section">5.7 Enumerations</h3> + +<p>Enumerations are defined with the ‘<samp>e</samp>’ type descriptor. +</p> +<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> +<p>The source line: +</p> +<div class="example"> +<pre class="example">enum e_places {first,second=3,last}; +</pre></div> + +<p>generates the following stab: +</p> +<div class="example"> +<pre class="example">.stabs "e_places:T22=efirst:0,second:3,last:4,;",128,0,0,0 +</pre></div> + +<p>The symbol descriptor (‘<samp>T</samp>’) says that the stab describes a +structure, enumeration, or union tag. The type descriptor ‘<samp>e</samp>’, +following the ‘<samp>22=</samp>’ of the type definition narrows it down to an +enumeration type. Following the ‘<samp>e</samp>’ is a list of the elements of +the enumeration. The format is ‘<samp><var>name</var>:<var>value</var>,</samp>’. The +list of elements ends with ‘<samp>;</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> +<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> +<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>T</samp>’ or +‘<samp>t</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. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Structures.html#Structures" accesskey="n" rel="next">Structures</a>, Previous: <a href="Strings.html#Strings" accesskey="p" rel="previous">Strings</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Expanded-Reference.html b/share/doc/stabs/Expanded-Reference.html new file mode 100644 index 0000000..1d122a3 --- /dev/null +++ b/share/doc/stabs/Expanded-Reference.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Expanded Reference</title> + +<meta name="description" content="STABS: Expanded Reference"> +<meta name="keywords" content="STABS: Expanded Reference"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="N_005fPC.html#N_005fPC" rel="next" title="N_PC"> +<link href="Type-Descriptors.html#Type-Descriptors" rel="previous" title="Type Descriptors"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Expanded-Reference"></a> +<div class="header"> +<p> +Next: <a href="Questions.html#Questions" accesskey="n" rel="next">Questions</a>, Previous: <a href="Type-Descriptors.html#Type-Descriptors" accesskey="p" rel="previous">Type Descriptors</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Expanded-Reference-by-Stab-Type"></a> +<h2 class="appendix">Appendix D Expanded Reference by Stab Type</h2> + + +<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> +<p>Format of an entry: +</p> +<p>The first line is the symbol type (see <samp>include/aout/stab.def</samp>). +</p> +<p>The second line describes the language constructs the symbol type +represents. +</p> +<p>The third line is the stab format with the significant stab fields +named and the rest NIL. +</p> +<p>Subsequent lines expand upon the meaning and possible values for each +significant stab field. +</p> +<p>Finally, any further information. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="N_005fPC.html#N_005fPC" accesskey="1">N_PC</a>:</td><td> </td><td align="left" valign="top">Pascal global symbol +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fNSYMS.html#N_005fNSYMS" accesskey="2">N_NSYMS</a>:</td><td> </td><td align="left" valign="top">Number of symbols +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fNOMAP.html#N_005fNOMAP" accesskey="3">N_NOMAP</a>:</td><td> </td><td align="left" valign="top">No DST map +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fM2C.html#N_005fM2C" accesskey="4">N_M2C</a>:</td><td> </td><td align="left" valign="top">Modula-2 compilation unit +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fBROWS.html#N_005fBROWS" accesskey="5">N_BROWS</a>:</td><td> </td><td align="left" valign="top">Path to .cb file for Sun source code browser +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fDEFD.html#N_005fDEFD" accesskey="6">N_DEFD</a>:</td><td> </td><td align="left" valign="top">GNU Modula2 definition module dependency +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fEHDECL.html#N_005fEHDECL" accesskey="7">N_EHDECL</a>:</td><td> </td><td align="left" valign="top">GNU C++ exception variable +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fMOD2.html#N_005fMOD2" accesskey="8">N_MOD2</a>:</td><td> </td><td align="left" valign="top">Modula2 information "for imc" +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fCATCH.html#N_005fCATCH" accesskey="9">N_CATCH</a>:</td><td> </td><td align="left" valign="top">GNU C++ "catch" clause +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>:</td><td> </td><td align="left" valign="top">Structure or union element +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>:</td><td> </td><td align="left" valign="top">Modula2 scope information (Sun only) +</td></tr> +<tr><td align="left" valign="top">• <a href="Gould.html#Gould">Gould</a>:</td><td> </td><td align="left" valign="top">non-base register symbols used on Gould systems +</td></tr> +<tr><td align="left" valign="top">• <a href="N_005fLENG.html#N_005fLENG">N_LENG</a>:</td><td> </td><td align="left" valign="top">Length of preceding entry +</td></tr> +</table> + +<hr> +<div class="header"> +<p> +Next: <a href="Questions.html#Questions" accesskey="n" rel="next">Questions</a>, Previous: <a href="Type-Descriptors.html#Type-Descriptors" accesskey="p" rel="previous">Type Descriptors</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Flow.html b/share/doc/stabs/Flow.html new file mode 100644 index 0000000..f133a51 --- /dev/null +++ b/share/doc/stabs/Flow.html @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Flow</title> + +<meta name="description" content="STABS: Flow"> +<meta name="keywords" content="STABS: Flow"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Overview.html#Overview" rel="up" title="Overview"> +<link href="Stabs-Format.html#Stabs-Format" rel="next" title="Stabs Format"> +<link href="Overview.html#Overview" rel="previous" title="Overview"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Flow"></a> +<div class="header"> +<p> +Next: <a href="Stabs-Format.html#Stabs-Format" accesskey="n" rel="next">Stabs Format</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Overview-of-Debugging-Information-Flow"></a> +<h3 class="section">1.1 Overview of Debugging Information Flow</h3> + +<p>The GNU C compiler compiles C source in a <samp>.c</samp> file into assembly +language in a <samp>.s</samp> file, which the assembler translates into +a <samp>.o</samp> file, which the linker combines with other <samp>.o</samp> files and +libraries to produce an executable file. +</p> +<p>With the ‘<samp>-g</samp>’ option, GCC puts in the <samp>.s</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> +<p>For some object file formats, the debugging information is encapsulated +in assembler directives known collectively as <em>stab</em> (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> +<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>.o</samp> file it is building. The linker consolidates the <samp>.o</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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Function-Types.html b/share/doc/stabs/Function-Types.html new file mode 100644 index 0000000..29a71c5 --- /dev/null +++ b/share/doc/stabs/Function-Types.html @@ -0,0 +1,115 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Function Types</title> + +<meta name="description" content="STABS: Function Types"> +<meta name="keywords" content="STABS: Function Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Macro-define-and-undefine.html#Macro-define-and-undefine" rel="next" title="Macro define and undefine"> +<link href="Unions.html#Unions" rel="previous" title="Unions"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Function-Types"></a> +<div class="header"> +<p> +Previous: <a href="Unions.html#Unions" accesskey="p" rel="previous">Unions</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Function-Types-1"></a> +<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> +<p>The simple, traditional, type is type descriptor ‘<samp>f</samp>’ is followed by +type information for the return type of the function, followed by a +semicolon. +</p> +<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>f</samp>’, ‘<samp>F</samp>’, ‘<samp>p</samp>’, and +‘<samp>R</samp>’ type descriptors. +</p> +<p>First comes the type descriptor. If it is ‘<samp>f</samp>’ or ‘<samp>F</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>R</samp>’ +and ‘<samp>F</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> +<p>For example, this variable definition: +</p> +<div class="example"> +<pre class="example">int (*g_pf)(); +</pre></div> + +<p>generates the following code: +</p> +<div class="example"> +<pre class="example">.stabs "g_pf:G24=*25=f1",32,0,0,0 + .common _g_pf,4,"bss" +</pre></div> + +<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>. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/GNU-Free-Documentation-License.html b/share/doc/stabs/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..94f47bf --- /dev/null +++ b/share/doc/stabs/GNU-Free-Documentation-License.html @@ -0,0 +1,548 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: GNU Free Documentation License</title> + +<meta name="description" content="STABS: GNU Free Documentation License"> +<meta name="keywords" content="STABS: GNU Free Documentation License"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="next" title="Symbol Types Index"> +<link href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" rel="previous" title="ELF Linker Relocation"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="GNU-Free-Documentation-License"></a> +<div class="header"> +<p> +Next: <a href="Symbol-Types-Index.html#Symbol-Types-Index" accesskey="n" rel="next">Symbol Types Index</a>, Previous: <a href="Stab-Sections.html#Stab-Sections" accesskey="p" rel="previous">Stab Sections</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="GNU-Free-Documentation-License-1"></a> +<h2 class="appendix">Appendix G GNU Free Documentation License</h2> +<div align="center">Version 1.3, 3 November 2008 +</div> + +<div class="display"> +<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></div> + +<ol> +<li> PREAMBLE + +<p>The purpose of this License is to make a manual, textbook, or other +functional and useful document <em>free</em> 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> +<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> +<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. +</p> +</li><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> +<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> +<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> +<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> +<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> +<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> +<p>Examples of suitable formats for Transparent copies include plain +<small>ASCII</small> 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> +<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> +<p>The “publisher” means any person or entity that distributes copies +of the Document to the public. +</p> +<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> +<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. +</p> +</li><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> +<p>You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +</p> +</li><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> +<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> +<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> +<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. +</p> +</li><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: +</p> +<ol> +<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><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><li> State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +</li><li> Preserve all the copyright notices of the Document. + +</li><li> Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +</li><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><li> Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. + +</li><li> Include an unaltered copy of this License. + +</li><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><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><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><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><li> Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +</li><li> Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +</li><li> Preserve any Warranty Disclaimers. +</li></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> +<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> +<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> +<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. +</p> +</li><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> +<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> +<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.” +</p> +</li><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> +<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. +</p> +</li><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> +<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. +</p> +</li><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> +<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. +</p> +</li><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> +<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> +<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> +<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. +</p> +</li><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> +<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. +</p> +</li><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> +<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> +<p>“Incorporate” means to publish or republish a Document, in whole or +in part, as part of another Document. +</p> +<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> +<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. +</p> +</li></ol> + +<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a> +<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: +</p> +<div class="smallexample"> +<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></div> + +<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +</p> +<div class="smallexample"> +<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></div> + +<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> +<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. +</p> + +<hr> +<div class="header"> +<p> +Next: <a href="Symbol-Types-Index.html#Symbol-Types-Index" accesskey="n" rel="next">Symbol Types Index</a>, Previous: <a href="Stab-Sections.html#Stab-Sections" accesskey="p" rel="previous">Stab Sections</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Global-Variables.html b/share/doc/stabs/Global-Variables.html new file mode 100644 index 0000000..7b567aa --- /dev/null +++ b/share/doc/stabs/Global-Variables.html @@ -0,0 +1,109 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Global Variables</title> + +<meta name="description" content="STABS: Global Variables"> +<meta name="keywords" content="STABS: Global Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Register-Variables.html#Register-Variables" rel="next" title="Register Variables"> +<link href="Stack-Variables.html#Stack-Variables" rel="previous" title="Stack Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Global-Variables"></a> +<div class="header"> +<p> +Next: <a href="Register-Variables.html#Register-Variables" accesskey="n" rel="next">Register Variables</a>, Previous: <a href="Stack-Variables.html#Stack-Variables" accesskey="p" rel="previous">Stack Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Global-Variables-1"></a> +<h3 class="section">4.2 Global Variables</h3> + +<a name="index-N_005fGSYM"></a> +<a name="index-C_005fGSYM"></a> +<p>A variable whose scope is not specific to just one source file is +represented by the ‘<samp>G</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> +<p>For example, the following source code: +</p> +<div class="example"> +<pre class="example">char g_foo = 'c'; +</pre></div> + +<p>yields the following assembly code: +</p> +<div class="example"> +<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></div> + +<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> +<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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Gould.html b/share/doc/stabs/Gould.html new file mode 100644 index 0000000..0ad650d --- /dev/null +++ b/share/doc/stabs/Gould.html @@ -0,0 +1,104 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Gould</title> + +<meta name="description" content="STABS: Gould"> +<meta name="keywords" content="STABS: Gould"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fLENG.html#N_005fLENG" rel="next" title="N_LENG"> +<link href="N_005fSCOPE.html#N_005fSCOPE" rel="previous" title="N_SCOPE"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Gould"></a> +<div class="header"> +<p> +Next: <a href="N_005fLENG.html#N_005fLENG" accesskey="n" rel="next">N_LENG</a>, Previous: <a href="N_005fSCOPE.html#N_005fSCOPE" accesskey="p" rel="previous">N_SCOPE</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Non_002dbase-registers-on-Gould-systems"></a> +<h3 class="section">D.12 Non-base registers on Gould systems</h3> + +<dl> +<dt><a name="index-N_005fNBTEXT"></a><code>.stab?</code>: <strong>N_NBTEXT</strong></dt> +<dt><a name="index-N_005fNBDATA"></a><code>.stab?</code>: <strong>N_NBDATA</strong></dt> +<dt><a name="index-N_005fNBBSS"></a><code>.stab?</code>: <strong>N_NBBSS</strong></dt> +<dt><a name="index-N_005fNBSTS"></a><code>.stab?</code>: <strong>N_NBSTS</strong></dt> +<dt><a name="index-N_005fNBLCS"></a><code>.stab?</code>: <strong>N_NBLCS</strong></dt> +<dd><a name="index-N_005fNBTEXT-1"></a> +<a name="index-N_005fNBDATA-1"></a> +<a name="index-N_005fNBBSS-1"></a> +<a name="index-N_005fNBSTS-1"></a> +<a name="index-N_005fNBLCS-1"></a> +<p>These are used on Gould systems for non-base registers syms. +</p> +<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). +</p> +<div class="example"> +<pre class="example">240 0xf0 N_NBTEXT ?? +242 0xf2 N_NBDATA ?? +244 0xf4 N_NBBSS ?? +246 0xf6 N_NBSTS ?? +248 0xf8 N_NBLCS ?? +</pre></div> +</dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/Include-Files.html b/share/doc/stabs/Include-Files.html new file mode 100644 index 0000000..c934cb5 --- /dev/null +++ b/share/doc/stabs/Include-Files.html @@ -0,0 +1,132 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Include Files</title> + +<meta name="description" content="STABS: Include Files"> +<meta name="keywords" content="STABS: Include Files"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Line-Numbers.html#Line-Numbers" rel="next" title="Line Numbers"> +<link href="Source-Files.html#Source-Files" rel="previous" title="Source Files"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Include-Files"></a> +<div class="header"> +<p> +Next: <a href="Line-Numbers.html#Line-Numbers" accesskey="n" rel="next">Line Numbers</a>, Previous: <a href="Source-Files.html#Source-Files" accesskey="p" rel="previous">Source Files</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Names-of-Include-Files"></a> +<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"></a> +<p>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"></a> +<a name="index-N_005fEINCL"></a> +<a name="index-N_005fEXCL"></a> +<p>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> +<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> +<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"></a> +<a name="index-C_005fEINCL"></a> +<p>For the start of an include file in XCOFF, use the <samp>.bi</samp> assembler +directive, which generates a <code>C_BINCL</code> symbol. A <samp>.ei</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. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Line-Numbers.html#Line-Numbers" accesskey="n" rel="next">Line Numbers</a>, Previous: <a href="Source-Files.html#Source-Files" accesskey="p" rel="previous">Source Files</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Inheritance.html b/share/doc/stabs/Inheritance.html new file mode 100644 index 0000000..ad2e79d --- /dev/null +++ b/share/doc/stabs/Inheritance.html @@ -0,0 +1,179 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Inheritance</title> + +<meta name="description" content="STABS: Inheritance"> +<meta name="keywords" content="STABS: Inheritance"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Virtual-Base-Classes.html#Virtual-Base-Classes" rel="next" title="Virtual Base Classes"> +<link href="Virtual-Methods.html#Virtual-Methods" rel="previous" title="Virtual Methods"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Inheritance"></a> +<div class="header"> +<p> +Next: <a href="Virtual-Base-Classes.html#Virtual-Base-Classes" accesskey="n" rel="next">Virtual Base Classes</a>, Previous: <a href="Virtual-Methods.html#Virtual-Methods" accesskey="p" rel="previous">Virtual Methods</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Inheritance-1"></a> +<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> +<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> +<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> +<p>The virtual character is ‘<samp>1</samp>’ if the base class is virtual and +‘<samp>0</samp>’ if not. The visibility character is ‘<samp>2</samp>’ if the derivation +is public, ‘<samp>1</samp>’ if it is protected, and ‘<samp>0</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> +<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> +<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> +<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>. +</p> + +<div class="example"> +<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></div> + +<p>Class stabs similar to the ones described earlier are generated for +each base class. +</p> +<div class="smallexample"> +<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></div> + +<p>In the stab describing derived class <code>D</code> below, the information about +the derivation of this class is encoded as follows. +</p> +<div class="display"> +<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); … +</pre></div> + +<div class="smallexample"> +<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></div> + +<hr> +<div class="header"> +<p> +Next: <a href="Virtual-Base-Classes.html#Virtual-Base-Classes" accesskey="n" rel="next">Virtual Base Classes</a>, Previous: <a href="Virtual-Methods.html#Virtual-Methods" accesskey="p" rel="previous">Virtual Methods</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Line-Numbers.html b/share/doc/stabs/Line-Numbers.html new file mode 100644 index 0000000..ef3b09c --- /dev/null +++ b/share/doc/stabs/Line-Numbers.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Line Numbers</title> + +<meta name="description" content="STABS: Line Numbers"> +<meta name="keywords" content="STABS: Line Numbers"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Procedures.html#Procedures" rel="next" title="Procedures"> +<link href="Include-Files.html#Include-Files" rel="previous" title="Include Files"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Line-Numbers"></a> +<div class="header"> +<p> +Next: <a href="Procedures.html#Procedures" accesskey="n" rel="next">Procedures</a>, Previous: <a href="Include-Files.html#Include-Files" accesskey="p" rel="previous">Include Files</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Line-Numbers-1"></a> +<h3 class="section">2.4 Line Numbers</h3> + +<a name="index-N_005fSLINE"></a> +<p>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"></a> +<a name="index-N_005fBSLINE"></a> +<p>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> +<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> +<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>). +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Local-Variable-Parameters.html b/share/doc/stabs/Local-Variable-Parameters.html new file mode 100644 index 0000000..7e26292 --- /dev/null +++ b/share/doc/stabs/Local-Variable-Parameters.html @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Local Variable Parameters</title> + +<meta name="description" content="STABS: Local Variable Parameters"> +<meta name="keywords" content="STABS: Local Variable Parameters"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Parameters.html#Parameters" rel="up" title="Parameters"> +<link href="Reference-Parameters.html#Reference-Parameters" rel="next" title="Reference Parameters"> +<link href="Register-Parameters.html#Register-Parameters" rel="previous" title="Register Parameters"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Local-Variable-Parameters"></a> +<div class="header"> +<p> +Next: <a href="Reference-Parameters.html#Reference-Parameters" accesskey="n" rel="next">Reference Parameters</a>, Previous: <a href="Register-Parameters.html#Register-Parameters" accesskey="p" rel="previous">Register Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Storing-Parameters-as-Local-Variables"></a> +<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> +<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>p</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: +</p> +<div class="example"> +<pre class="example">void +subr (f) + float f; +{ +</pre></div> + +<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: +</p> +<div class="example"> +<pre class="example">.stabs "f:p13",160,0,3,8 # <span class="roman">160 is <code>N_PSYM</code>, here 13 is <code>double</code></span> +.stabs "f:r12",64,0,3,0 # <span class="roman">64 is <code>N_RSYM</code>, here 12 is <code>float</code></span> +</pre></div> + +<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"></a> +<p>GCC, at least on the 960, has another solution to the same problem. It +uses a single ‘<samp>p</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. +</p> +<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 +</p> +<div class="example"> +<pre class="example">extern int fprintf (FILE *stream, char *format, …); +… +fprintf (stdout, "%d\n", x); +</pre></div> + +<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>p</samp>’) (not necessarily +‘<samp>r</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). +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Reference-Parameters.html#Reference-Parameters" accesskey="n" rel="next">Reference Parameters</a>, Previous: <a href="Register-Parameters.html#Register-Parameters" accesskey="p" rel="previous">Register Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Macro-define-and-undefine.html b/share/doc/stabs/Macro-define-and-undefine.html new file mode 100644 index 0000000..7636cc7 --- /dev/null +++ b/share/doc/stabs/Macro-define-and-undefine.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Macro define and undefine</title> + +<meta name="description" content="STABS: Macro define and undefine"> +<meta name="keywords" content="STABS: Macro define and undefine"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Symbol-Tables.html#Symbol-Tables" rel="next" title="Symbol Tables"> +<link href="Function-Types.html#Function-Types" rel="previous" title="Function Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Macro-define-and-undefine"></a> +<div class="header"> +<p> +Next: <a href="Symbol-Tables.html#Symbol-Tables" accesskey="n" rel="next">Symbol Tables</a>, Previous: <a href="Types.html#Types" accesskey="p" rel="previous">Types</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Representation-of-_0023define-and-_0023undef"></a> +<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>-g3</samp> +<samp>-gstabs</samp> when using GCC). +</p> +<p>A <code>#define <var>macro-name</var> <var>macro-body</var></code> is represented with +an <code>N_MAC_DEFINE</code> stab with a string field of +<code><var>macro-name</var> <var>macro-body</var></code>. +<a name="index-N_005fMAC_005fDEFINE"></a> +</p> +<p>An <code>#undef <var>macro-name</var></code> is represented with an +<code>N_MAC_UNDEF</code> stabs with a string field of simply +<code><var>macro-name</var></code>. +<a name="index-N_005fMAC_005fUNDEF"></a> +</p> +<p>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> +<p>For example, the following C code: +</p> +<div class="example"> +<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></div> + +<p>produces the following stabs (as well as many others): +</p> +<div class="example"> +<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></div> + +<p>NOTE: In the above example, <code>54</code> is <code>N_MAC_DEFINE</code> and +<code>58</code> is <code>N_MAC_UNDEF</code>. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Main-Program.html b/share/doc/stabs/Main-Program.html new file mode 100644 index 0000000..c671339 --- /dev/null +++ b/share/doc/stabs/Main-Program.html @@ -0,0 +1,84 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Main Program</title> + +<meta name="description" content="STABS: Main Program"> +<meta name="keywords" content="STABS: Main Program"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Source-Files.html#Source-Files" rel="next" title="Source Files"> +<link href="Program-Structure.html#Program-Structure" rel="previous" title="Program Structure"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Main-Program"></a> +<div class="header"> +<p> +Next: <a href="Source-Files.html#Source-Files" accesskey="n" rel="next">Source Files</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Main-Program-1"></a> +<h3 class="section">2.1 Main Program</h3> + +<a name="index-N_005fMAIN"></a> +<p>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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Member-Type-Descriptor.html b/share/doc/stabs/Member-Type-Descriptor.html new file mode 100644 index 0000000..291e33e --- /dev/null +++ b/share/doc/stabs/Member-Type-Descriptor.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Member Type Descriptor</title> + +<meta name="description" content="STABS: Member Type Descriptor"> +<meta name="keywords" content="STABS: Member Type Descriptor"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Protections.html#Protections" rel="next" title="Protections"> +<link href="Method-Type-Descriptor.html#Method-Type-Descriptor" rel="previous" title="Method Type Descriptor"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Member-Type-Descriptor"></a> +<div class="header"> +<p> +Next: <a href="Protections.html#Protections" accesskey="n" rel="next">Protections</a>, Previous: <a href="Method-Type-Descriptor.html#Method-Type-Descriptor" accesskey="p" rel="previous">Method Type Descriptor</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="The-_0040-Type-Descriptor"></a> +<h3 class="section">8.8 The ‘<samp>@</samp>’ Type Descriptor</h3> + +<p>The ‘<samp>@</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> +<p>The following C<tt>++</tt> source: +</p> +<div class="smallexample"> +<pre class="smallexample">typedef int A::*int_in_a; +</pre></div> + +<p>generates the following stab: +</p> +<div class="smallexample"> +<pre class="smallexample">.stabs "int_in_a:t20=21=@19,1",128,0,0,0 +</pre></div> + +<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>@</samp>’. +Fortunately, the ‘<samp>@</samp>’ type descriptor used in this C<tt>++</tt> sense always +will be followed by a digit, ‘<samp>(</samp>’, or ‘<samp>-</samp>’, and type attributes +never start with those things. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Method-Modifiers.html b/share/doc/stabs/Method-Modifiers.html new file mode 100644 index 0000000..1beee9b --- /dev/null +++ b/share/doc/stabs/Method-Modifiers.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Method Modifiers</title> + +<meta name="description" content="STABS: Method Modifiers"> +<meta name="keywords" content="STABS: Method Modifiers"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Virtual-Methods.html#Virtual-Methods" rel="next" title="Virtual Methods"> +<link href="Protections.html#Protections" rel="previous" title="Protections"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Method-Modifiers"></a> +<div class="header"> +<p> +Next: <a href="Virtual-Methods.html#Virtual-Methods" accesskey="n" rel="next">Virtual Methods</a>, Previous: <a href="Protections.html#Protections" accesskey="p" rel="previous">Protections</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Method-Modifiers-_0028const_002c-volatile_002c-const-volatile_0029"></a> +<h3 class="section">8.10 Method Modifiers (<code>const</code>, <code>volatile</code>, <code>const volatile</code>)</h3> + +<p><< based on a6.C >> +</p> +<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>A</samp>’, const methods use +‘<samp>B</samp>’, volatile methods use ‘<samp>C</samp>’, and const volatile methods use +‘<samp>D</samp>’. Consider the class definition below: +</p> +<div class="example"> +<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></div> + +<p>This class is described by the following stab: +</p> +<div class="display"> +<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);;", … +</pre></div> + +<div class="example"> +<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></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Method-Type-Descriptor.html b/share/doc/stabs/Method-Type-Descriptor.html new file mode 100644 index 0000000..c497f33 --- /dev/null +++ b/share/doc/stabs/Method-Type-Descriptor.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Method Type Descriptor</title> + +<meta name="description" content="STABS: Method Type Descriptor"> +<meta name="keywords" content="STABS: Method Type Descriptor"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Member-Type-Descriptor.html#Member-Type-Descriptor" rel="next" title="Member Type Descriptor"> +<link href="Methods.html#Methods" rel="previous" title="Methods"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Method-Type-Descriptor"></a> +<div class="header"> +<p> +Next: <a href="Member-Type-Descriptor.html#Member-Type-Descriptor" accesskey="n" rel="next">Member Type Descriptor</a>, Previous: <a href="Methods.html#Methods" accesskey="p" rel="previous">Methods</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="The-_0023-Type-Descriptor"></a> +<h3 class="section">8.7 The ‘<samp>#</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> +<p>If the ‘<samp>#</samp>’ is immediately followed by another ‘<samp>#</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> +<p>Otherwise, the single ‘<samp>#</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> +<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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Methods.html b/share/doc/stabs/Methods.html new file mode 100644 index 0000000..650038c --- /dev/null +++ b/share/doc/stabs/Methods.html @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Methods</title> + +<meta name="description" content="STABS: Methods"> +<meta name="keywords" content="STABS: Methods"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Method-Type-Descriptor.html#Method-Type-Descriptor" rel="next" title="Method Type Descriptor"> +<link href="Class-Instance.html#Class-Instance" rel="previous" title="Class Instance"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Methods"></a> +<div class="header"> +<p> +Next: <a href="Method-Type-Descriptor.html#Method-Type-Descriptor" accesskey="n" rel="next">Method Type Descriptor</a>, Previous: <a href="Class-Instance.html#Class-Instance" accesskey="p" rel="previous">Class Instance</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Method-Definition"></a> +<h3 class="section">8.6 Method Definition</h3> + +<p>The class definition shown above declares Ameth. The C<tt>++</tt> source below +defines Ameth: +</p> +<div class="example"> +<pre class="example">int +baseA::Ameth(int in, char other) +{ + return in; +}; +</pre></div> + + +<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 <small>ARM</small> (<cite>The Annotated +C++ Reference Manual</cite>, by Ellis and Stroustrup, <small>ISBN</small> +0-201-51459-1); <samp>gpcompare.texi</samp> in Cygnus GCC distributions +describes the differences between GNU mangling and <small>ARM</small> +mangling. +</p> +<div class="example"> +<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></div> + +<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>xs</samp>’. +</p> +<div class="example"> +<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></div> + +<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. +</p> +<div class="example"> +<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></div> + +<p><< The examples that follow are based on A1.C >> +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Method-Type-Descriptor.html#Method-Type-Descriptor" accesskey="n" rel="next">Method Type Descriptor</a>, Previous: <a href="Class-Instance.html#Class-Instance" accesskey="p" rel="previous">Class Instance</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Miscellaneous-Types.html b/share/doc/stabs/Miscellaneous-Types.html new file mode 100644 index 0000000..e543f49 --- /dev/null +++ b/share/doc/stabs/Miscellaneous-Types.html @@ -0,0 +1,129 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Miscellaneous Types</title> + +<meta name="description" content="STABS: Miscellaneous Types"> +<meta name="keywords" content="STABS: Miscellaneous Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Cross_002dReferences.html#Cross_002dReferences" rel="next" title="Cross-References"> +<link href="Negative-Type-Numbers.html#Negative-Type-Numbers" rel="previous" title="Negative Type Numbers"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Miscellaneous-Types"></a> +<div class="header"> +<p> +Next: <a href="Cross_002dReferences.html#Cross_002dReferences" accesskey="n" rel="next">Cross-References</a>, Previous: <a href="Builtin-Types.html#Builtin-Types" accesskey="p" rel="previous">Builtin Types</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Miscellaneous-Types-1"></a> +<h3 class="section">5.2 Miscellaneous Types</h3> + +<dl compact="compact"> +<dt><code>b <var>type-information</var> ; <var>bytes</var></code></dt> +<dd><p>Pascal space type. This is documented by IBM; what does it mean? +</p> +<p>This use of the ‘<samp>b</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>(</samp>’, or ‘<samp>-</samp>’. +</p> +</dd> +<dt><code>B <var>type-information</var></code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>d <var>type-information</var></code></dt> +<dd><p>File of type <var>type-information</var>. As far as I know this is only used +by Pascal. +</p> +</dd> +<dt><code>k <var>type-information</var></code></dt> +<dd><p>A const-qualified version of <var>type-information</var>. This is a Sun +extension. A variable with a const-qualified type cannot be modified. +</p> +</dd> +<dt><code>M <var>type-information</var> ; <var>length</var></code></dt> +<dd><p>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>M-2;3</samp>’, where ‘<samp>-2</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>. +</p> +</dd> +<dt><code>S <var>type-information</var></code></dt> +<dd><p>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> +<p>In CHILL, if it is a bitstring instead of a set, also use the ‘<samp>S</samp>’ +type attribute (see <a href="String-Field.html#String-Field">String Field</a>). +</p> +</dd> +<dt><code>* <var>type-information</var></code></dt> +<dd><p>Pointer to <var>type-information</var>. +</p></dd> +</dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Cross_002dReferences.html#Cross_002dReferences" accesskey="n" rel="next">Cross-References</a>, Previous: <a href="Builtin-Types.html#Builtin-Types" accesskey="p" rel="previous">Builtin Types</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fBROWS.html b/share/doc/stabs/N_005fBROWS.html new file mode 100644 index 0000000..8afc8e3 --- /dev/null +++ b/share/doc/stabs/N_005fBROWS.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_BROWS</title> + +<meta name="description" content="STABS: N_BROWS"> +<meta name="keywords" content="STABS: N_BROWS"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fDEFD.html#N_005fDEFD" rel="next" title="N_DEFD"> +<link href="N_005fM2C.html#N_005fM2C" rel="previous" title="N_M2C"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fBROWS"></a> +<div class="header"> +<p> +Next: <a href="N_005fDEFD.html#N_005fDEFD" accesskey="n" rel="next">N_DEFD</a>, Previous: <a href="N_005fM2C.html#N_005fM2C" accesskey="p" rel="previous">N_M2C</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fBROWS-1"></a> +<h3 class="section">D.5 N_BROWS</h3> + +<dl> +<dt><a name="index-N_005fBROWS"></a><code>.stabs</code>: <strong>N_BROWS</strong></dt> +<dd><a name="index-N_005fBROWS-1"></a> +<p>Sun source code browser, path to <samp>.cb</samp> file +</p> +<p><<?>> +"path to associated <samp>.cb</samp> file" +</p> +<p>Note: N_BROWS has the same value as N_BSLINE. +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fCATCH.html b/share/doc/stabs/N_005fCATCH.html new file mode 100644 index 0000000..5bd5da5 --- /dev/null +++ b/share/doc/stabs/N_005fCATCH.html @@ -0,0 +1,87 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_CATCH</title> + +<meta name="description" content="STABS: N_CATCH"> +<meta name="keywords" content="STABS: N_CATCH"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fSSYM.html#N_005fSSYM" rel="next" title="N_SSYM"> +<link href="N_005fMOD2.html#N_005fMOD2" rel="previous" title="N_MOD2"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fCATCH"></a> +<div class="header"> +<p> +Next: <a href="N_005fSSYM.html#N_005fSSYM" accesskey="n" rel="next">N_SSYM</a>, Previous: <a href="N_005fMOD2.html#N_005fMOD2" accesskey="p" rel="previous">N_MOD2</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fCATCH-1"></a> +<h3 class="section">D.9 N_CATCH</h3> + +<dl> +<dt><a name="index-N_005fCATCH"></a><code>.stabn</code>: <strong>N_CATCH</strong></dt> +<dd><a name="index-N_005fCATCH-1"></a> +<p>GNU C<tt>++</tt> <code>catch</code> clause +</p> +<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></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fDEFD.html b/share/doc/stabs/N_005fDEFD.html new file mode 100644 index 0000000..b824cb4 --- /dev/null +++ b/share/doc/stabs/N_005fDEFD.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_DEFD</title> + +<meta name="description" content="STABS: N_DEFD"> +<meta name="keywords" content="STABS: N_DEFD"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fEHDECL.html#N_005fEHDECL" rel="next" title="N_EHDECL"> +<link href="N_005fBROWS.html#N_005fBROWS" rel="previous" title="N_BROWS"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fDEFD"></a> +<div class="header"> +<p> +Next: <a href="N_005fEHDECL.html#N_005fEHDECL" accesskey="n" rel="next">N_EHDECL</a>, Previous: <a href="N_005fBROWS.html#N_005fBROWS" accesskey="p" rel="previous">N_BROWS</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fDEFD-1"></a> +<h3 class="section">D.6 N_DEFD</h3> + +<dl> +<dt><a name="index-N_005fDEFD"></a><code>.stabn</code>: <strong>N_DEFD</strong></dt> +<dd><a name="index-N_005fDEFD-1"></a> +<p>GNU Modula2 definition module dependency. +</p> +<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></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fEHDECL.html b/share/doc/stabs/N_005fEHDECL.html new file mode 100644 index 0000000..8fb34b1 --- /dev/null +++ b/share/doc/stabs/N_005fEHDECL.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_EHDECL</title> + +<meta name="description" content="STABS: N_EHDECL"> +<meta name="keywords" content="STABS: N_EHDECL"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fMOD2.html#N_005fMOD2" rel="next" title="N_MOD2"> +<link href="N_005fDEFD.html#N_005fDEFD" rel="previous" title="N_DEFD"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fEHDECL"></a> +<div class="header"> +<p> +Next: <a href="N_005fMOD2.html#N_005fMOD2" accesskey="n" rel="next">N_MOD2</a>, Previous: <a href="N_005fDEFD.html#N_005fDEFD" accesskey="p" rel="previous">N_DEFD</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fEHDECL-1"></a> +<h3 class="section">D.7 N_EHDECL</h3> + +<dl> +<dt><a name="index-N_005fEHDECL"></a><code>.stabs</code>: <strong>N_EHDECL</strong></dt> +<dd><a name="index-N_005fEHDECL-1"></a> +<p>GNU C<tt>++</tt> exception variable <<?>>. +</p> +<p>"<var>string</var> is variable name" +</p> +<p>Note: conflicts with <code>N_MOD2</code>. +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fLENG.html b/share/doc/stabs/N_005fLENG.html new file mode 100644 index 0000000..1165714 --- /dev/null +++ b/share/doc/stabs/N_005fLENG.html @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_LENG</title> + +<meta name="description" content="STABS: N_LENG"> +<meta name="keywords" content="STABS: N_LENG"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="Questions.html#Questions" rel="next" title="Questions"> +<link href="Gould.html#Gould" rel="previous" title="Gould"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fLENG"></a> +<div class="header"> +<p> +Previous: <a href="Gould.html#Gould" accesskey="p" rel="previous">Gould</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fLENG-1"></a> +<h3 class="section">D.13 N_LENG</h3> + +<dl> +<dt><a name="index-N_005fLENG"></a><code>.stabn</code>: <strong>N_LENG</strong></dt> +<dd><a name="index-N_005fLENG-1"></a> +<p>Second symbol entry containing a length-value for the preceding entry. +The value is the length. +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fM2C.html b/share/doc/stabs/N_005fM2C.html new file mode 100644 index 0000000..207f903 --- /dev/null +++ b/share/doc/stabs/N_005fM2C.html @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_M2C</title> + +<meta name="description" content="STABS: N_M2C"> +<meta name="keywords" content="STABS: N_M2C"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fBROWS.html#N_005fBROWS" rel="next" title="N_BROWS"> +<link href="N_005fNOMAP.html#N_005fNOMAP" rel="previous" title="N_NOMAP"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fM2C"></a> +<div class="header"> +<p> +Next: <a href="N_005fBROWS.html#N_005fBROWS" accesskey="n" rel="next">N_BROWS</a>, Previous: <a href="N_005fNOMAP.html#N_005fNOMAP" accesskey="p" rel="previous">N_NOMAP</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fM2C-1"></a> +<h3 class="section">D.4 N_M2C</h3> + +<dl> +<dt><a name="index-N_005fM2C"></a><code>.stabs</code>: <strong>N_M2C</strong></dt> +<dd><a name="index-N_005fM2C-1"></a> +<p>Modula-2 compilation unit. +</p> +<div class="example"> +<pre class="example">"string" -> "unit_name,unit_time_stamp[,code_time_stamp]" +desc -> unit_number +value -> 0 (main unit) + 1 (any other unit) +</pre></div> + +<p>See <cite>Dbx and Dbxtool Interfaces</cite>, 2nd edition, by Sun, 1988, for +more information. +</p> +</dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fMOD2.html b/share/doc/stabs/N_005fMOD2.html new file mode 100644 index 0000000..6dfbe2f --- /dev/null +++ b/share/doc/stabs/N_005fMOD2.html @@ -0,0 +1,83 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_MOD2</title> + +<meta name="description" content="STABS: N_MOD2"> +<meta name="keywords" content="STABS: N_MOD2"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fCATCH.html#N_005fCATCH" rel="next" title="N_CATCH"> +<link href="N_005fEHDECL.html#N_005fEHDECL" rel="previous" title="N_EHDECL"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fMOD2"></a> +<div class="header"> +<p> +Next: <a href="N_005fCATCH.html#N_005fCATCH" accesskey="n" rel="next">N_CATCH</a>, Previous: <a href="N_005fEHDECL.html#N_005fEHDECL" accesskey="p" rel="previous">N_EHDECL</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fMOD2-1"></a> +<h3 class="section">D.8 N_MOD2</h3> + +<dl> +<dt><a name="index-N_005fMOD2"></a><code>.stab?</code>: <strong>N_MOD2</strong></dt> +<dd><a name="index-N_005fMOD2-1"></a> +<p>Modula2 info "for imc" (according to Ultrix V4.0) +</p> +<p>Note: conflicts with <code>N_EHDECL</code> <<?>> +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fNOMAP.html b/share/doc/stabs/N_005fNOMAP.html new file mode 100644 index 0000000..0f411a4 --- /dev/null +++ b/share/doc/stabs/N_005fNOMAP.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_NOMAP</title> + +<meta name="description" content="STABS: N_NOMAP"> +<meta name="keywords" content="STABS: N_NOMAP"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fM2C.html#N_005fM2C" rel="next" title="N_M2C"> +<link href="N_005fNSYMS.html#N_005fNSYMS" rel="previous" title="N_NSYMS"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fNOMAP"></a> +<div class="header"> +<p> +Next: <a href="N_005fM2C.html#N_005fM2C" accesskey="n" rel="next">N_M2C</a>, Previous: <a href="N_005fNSYMS.html#N_005fNSYMS" accesskey="p" rel="previous">N_NSYMS</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fNOMAP-1"></a> +<h3 class="section">D.3 N_NOMAP</h3> + +<dl> +<dt><a name="index-N_005fNOMAP"></a><code>.stabs</code>: <strong>N_NOMAP</strong></dt> +<dd><a name="index-N_005fNOMAP-1"></a> +<p>No DST map for symbol (according to Ultrix V4.0). I think this means a +variable has been optimized out. +</p> +<div class="display"> +<pre class="display"> name, ,0,type,ignored (stab.def) +</pre></div> +</dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fNSYMS.html b/share/doc/stabs/N_005fNSYMS.html new file mode 100644 index 0000000..78865d4 --- /dev/null +++ b/share/doc/stabs/N_005fNSYMS.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_NSYMS</title> + +<meta name="description" content="STABS: N_NSYMS"> +<meta name="keywords" content="STABS: N_NSYMS"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fNOMAP.html#N_005fNOMAP" rel="next" title="N_NOMAP"> +<link href="N_005fPC.html#N_005fPC" rel="previous" title="N_PC"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fNSYMS"></a> +<div class="header"> +<p> +Next: <a href="N_005fNOMAP.html#N_005fNOMAP" accesskey="n" rel="next">N_NOMAP</a>, Previous: <a href="N_005fPC.html#N_005fPC" accesskey="p" rel="previous">N_PC</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fNSYMS-1"></a> +<h3 class="section">D.2 N_NSYMS</h3> + +<dl> +<dt><a name="index-N_005fNSYMS"></a><code>.stabn</code>: <strong>N_NSYMS</strong></dt> +<dd><a name="index-N_005fNSYMS-1"></a> +<p>Number of symbols (according to Ultrix V4.0). +</p> +<div class="display"> +<pre class="display"> 0, files,,funcs,lines (stab.def) +</pre></div> +</dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fPC.html b/share/doc/stabs/N_005fPC.html new file mode 100644 index 0000000..690a9f3 --- /dev/null +++ b/share/doc/stabs/N_005fPC.html @@ -0,0 +1,93 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_PC</title> + +<meta name="description" content="STABS: N_PC"> +<meta name="keywords" content="STABS: N_PC"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fNSYMS.html#N_005fNSYMS" rel="next" title="N_NSYMS"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="previous" title="Expanded Reference"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fPC"></a> +<div class="header"> +<p> +Next: <a href="N_005fNSYMS.html#N_005fNSYMS" accesskey="n" rel="next">N_NSYMS</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fPC-1"></a> +<h3 class="section">D.1 N_PC</h3> + +<dl> +<dt><a name="index-N_005fPC"></a><code>.stabs</code>: <strong>N_PC</strong></dt> +<dd><a name="index-N_005fPC-1"></a> +<p>Global symbol (for Pascal). +</p> +<div class="example"> +<pre class="example">"name" -> "symbol_name" <<?>> +value -> supposedly the line number (stab.def is skeptical) +</pre></div> + +<div class="display"> +<pre class="display"><samp>stabdump.c</samp> says: + +global pascal symbol: name,,0,subtype,line +<< subtype? >> +</pre></div> +</dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fSCOPE.html b/share/doc/stabs/N_005fSCOPE.html new file mode 100644 index 0000000..8bdcc31 --- /dev/null +++ b/share/doc/stabs/N_005fSCOPE.html @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_SCOPE</title> + +<meta name="description" content="STABS: N_SCOPE"> +<meta name="keywords" content="STABS: N_SCOPE"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="Gould.html#Gould" rel="next" title="Gould"> +<link href="N_005fSSYM.html#N_005fSSYM" rel="previous" title="N_SSYM"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fSCOPE"></a> +<div class="header"> +<p> +Next: <a href="Gould.html#Gould" accesskey="n" rel="next">Gould</a>, Previous: <a href="N_005fSSYM.html#N_005fSSYM" accesskey="p" rel="previous">N_SSYM</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fSCOPE-1"></a> +<h3 class="section">D.11 N_SCOPE</h3> + +<dl> +<dt><a name="index-N_005fSCOPE"></a><code>.stab?</code>: <strong>N_SCOPE</strong></dt> +<dd><a name="index-N_005fSCOPE-1"></a> +<p>Modula2 scope information (Sun linker) +<<?>> +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/N_005fSSYM.html b/share/doc/stabs/N_005fSSYM.html new file mode 100644 index 0000000..2914f37 --- /dev/null +++ b/share/doc/stabs/N_005fSSYM.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: N_SSYM</title> + +<meta name="description" content="STABS: N_SSYM"> +<meta name="keywords" content="STABS: N_SSYM"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="up" title="Expanded Reference"> +<link href="N_005fSCOPE.html#N_005fSCOPE" rel="next" title="N_SCOPE"> +<link href="N_005fCATCH.html#N_005fCATCH" rel="previous" title="N_CATCH"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="N_005fSSYM"></a> +<div class="header"> +<p> +Next: <a href="N_005fSCOPE.html#N_005fSCOPE" accesskey="n" rel="next">N_SCOPE</a>, Previous: <a href="N_005fCATCH.html#N_005fCATCH" accesskey="p" rel="previous">N_CATCH</a>, Up: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="u" rel="up">Expanded Reference</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="N_005fSSYM-1"></a> +<h3 class="section">D.10 N_SSYM</h3> + +<dl> +<dt><a name="index-N_005fSSYM"></a><code>.stabn</code>: <strong>N_SSYM</strong></dt> +<dd><a name="index-N_005fSSYM-1"></a> +<p>Structure or union element. +</p> +<p>The value is the offset in the structure. +</p> +<p><<?looking at structs and unions in C I didn’t see these>> +</p></dd></dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/Negative-Type-Numbers.html b/share/doc/stabs/Negative-Type-Numbers.html new file mode 100644 index 0000000..69619eb --- /dev/null +++ b/share/doc/stabs/Negative-Type-Numbers.html @@ -0,0 +1,304 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Negative Type Numbers</title> + +<meta name="description" content="STABS: Negative Type Numbers"> +<meta name="keywords" content="STABS: Negative Type Numbers"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Builtin-Types.html#Builtin-Types" rel="up" title="Builtin Types"> +<link href="Miscellaneous-Types.html#Miscellaneous-Types" rel="next" title="Miscellaneous Types"> +<link href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" rel="previous" title="Builtin Type Descriptors"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Negative-Type-Numbers"></a> +<div class="header"> +<p> +Previous: <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" accesskey="p" rel="previous">Builtin Type Descriptors</a>, Up: <a href="Builtin-Types.html#Builtin-Types" accesskey="u" rel="up">Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Negative-Type-Numbers-1"></a> +<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> +<p>There are several subtle issues with negative type numbers. +</p> +<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, +</p> +<div class="example"> +<pre class="example">.stabs "boolean:t10=@s8;-16",128,0,0,0 +</pre></div> + +<p>defines an 8-bit boolean type, and +</p> +<div class="example"> +<pre class="example">.stabs "boolean:t10=@s64;-16",128,0,0,0 +</pre></div> + +<p>defines a 64-bit boolean type. +</p> +<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> +<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: +</p> +<div class="example"> +<pre class="example">.stabs "CARDINAL:t10=-8",128,0,0,0 +</pre></div> + +<p>Here is the list of negative type numbers. The phrase <em>integral +type</em> 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). +</p> +<dl compact="compact"> +<dt><code>-1</code></dt> +<dd><p><code>int</code>, 32 bit signed integral type. +</p> +</dd> +<dt><code>-2</code></dt> +<dd><p><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>. +</p> +</dd> +<dt><code>-3</code></dt> +<dd><p><code>short</code>, 16 bit signed integral type. +</p> +</dd> +<dt><code>-4</code></dt> +<dd><p><code>long</code>, 32 bit signed integral type. +</p> +</dd> +<dt><code>-5</code></dt> +<dd><p><code>unsigned char</code>, 8 bit unsigned integral type. +</p> +</dd> +<dt><code>-6</code></dt> +<dd><p><code>signed char</code>, 8 bit signed integral type. +</p> +</dd> +<dt><code>-7</code></dt> +<dd><p><code>unsigned short</code>, 16 bit unsigned integral type. +</p> +</dd> +<dt><code>-8</code></dt> +<dd><p><code>unsigned int</code>, 32 bit unsigned integral type. +</p> +</dd> +<dt><code>-9</code></dt> +<dd><p><code>unsigned</code>, 32 bit unsigned integral type. +</p> +</dd> +<dt><code>-10</code></dt> +<dd><p><code>unsigned long</code>, 32 bit unsigned integral type. +</p> +</dd> +<dt><code>-11</code></dt> +<dd><p><code>void</code>, type indicating the lack of a value. +</p> +</dd> +<dt><code>-12</code></dt> +<dd><p><code>float</code>, IEEE single precision. +</p> +</dd> +<dt><code>-13</code></dt> +<dd><p><code>double</code>, IEEE double precision. +</p> +</dd> +<dt><code>-14</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-15</code></dt> +<dd><p><code>integer</code>. 32 bit signed integral type. +</p> +</dd> +<dt><code>-16</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-17</code></dt> +<dd><p><code>short real</code>. IEEE single precision. +</p> +</dd> +<dt><code>-18</code></dt> +<dd><p><code>real</code>. IEEE double precision. +</p> +</dd> +<dt><code>-19</code></dt> +<dd><p><code>stringptr</code>. See <a href="Strings.html#Strings">Strings</a>. +</p> +</dd> +<dt><code>-20</code></dt> +<dd><p><code>character</code>, 8 bit unsigned character type. +</p> +</dd> +<dt><code>-21</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-22</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-23</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-24</code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>-25</code></dt> +<dd><p><code>complex</code>. A complex type consisting of two IEEE single-precision +floating point values. +</p> +</dd> +<dt><code>-26</code></dt> +<dd><p><code>complex</code>. A complex type consisting of two IEEE double-precision +floating point values. +</p> +</dd> +<dt><code>-27</code></dt> +<dd><p><code>integer*1</code>, 8 bit signed integral type. +</p> +</dd> +<dt><code>-28</code></dt> +<dd><p><code>integer*2</code>, 16 bit signed integral type. +</p> +</dd> +<dt><code>-29</code></dt> +<dd><p><code>integer*4</code>, 32 bit signed integral type. +</p> +</dd> +<dt><code>-30</code></dt> +<dd><p><code>wchar</code>. Wide character, 16 bits wide, unsigned (what format? +Unicode?). +</p> +</dd> +<dt><code>-31</code></dt> +<dd><p><code>long long</code>, 64 bit signed integral type. +</p> +</dd> +<dt><code>-32</code></dt> +<dd><p><code>unsigned long long</code>, 64 bit unsigned integral type. +</p> +</dd> +<dt><code>-33</code></dt> +<dd><p><code>logical*8</code>, 64 bit unsigned integral type. +</p> +</dd> +<dt><code>-34</code></dt> +<dd><p><code>integer*8</code>, 64 bit signed integral type. +</p></dd> +</dl> + +<hr> +<div class="header"> +<p> +Previous: <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" accesskey="p" rel="previous">Builtin Type Descriptors</a>, Up: <a href="Builtin-Types.html#Builtin-Types" accesskey="u" rel="up">Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Nested-Procedures.html b/share/doc/stabs/Nested-Procedures.html new file mode 100644 index 0000000..2a0380c --- /dev/null +++ b/share/doc/stabs/Nested-Procedures.html @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Nested Procedures</title> + +<meta name="description" content="STABS: Nested Procedures"> +<meta name="keywords" content="STABS: Nested Procedures"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Block-Structure.html#Block-Structure" rel="next" title="Block Structure"> +<link href="Procedures.html#Procedures" rel="previous" title="Procedures"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Nested-Procedures"></a> +<div class="header"> +<p> +Next: <a href="Block-Structure.html#Block-Structure" accesskey="n" rel="next">Block Structure</a>, Previous: <a href="Procedures.html#Procedures" accesskey="p" rel="previous">Procedures</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Nested-Procedures-1"></a> +<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>:</samp>’). This feature is used by GCC, and +presumably Pascal, Modula-2, etc., compilers, for nested functions. +</p> +<p>If procedures are nested more than one level deep, only the immediately +containing scope is specified. For example, this code: +</p> +<div class="example"> +<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></div> + +<p>produces the stabs: +</p> +<div class="example"> +<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></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Nested-Symbols.html b/share/doc/stabs/Nested-Symbols.html new file mode 100644 index 0000000..8663897 --- /dev/null +++ b/share/doc/stabs/Nested-Symbols.html @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Nested Symbols</title> + +<meta name="description" content="STABS: Nested Symbols"> +<meta name="keywords" content="STABS: Nested Symbols"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" rel="next" title="Basic Cplusplus Types"> +<link href="Class-Names.html#Class-Names" rel="previous" title="Class Names"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Nested-Symbols"></a> +<div class="header"> +<p> +Next: <a href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" accesskey="n" rel="next">Basic Cplusplus Types</a>, Previous: <a href="Class-Names.html#Class-Names" accesskey="p" rel="previous">Class Names</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Defining-a-Symbol-Within-Another-Type"></a> +<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. +</p> +<p>In stabs, this is sometimes represented by making the name of a symbol +which contains ‘<samp>::</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>:</samp>’ cannot be used as a symbol descriptor. +</p> +<p>For example, if the string for a stab is ‘<samp>foo::bar::baz:t5=*6</samp>’, +then <code>foo::bar::baz</code> is the name of the symbol, ‘<samp>t</samp>’ is the +symbol descriptor, and ‘<samp>5=*6</samp>’ is the type information. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Non_002dStab-Symbol-Types.html b/share/doc/stabs/Non_002dStab-Symbol-Types.html new file mode 100644 index 0000000..99c8f9f --- /dev/null +++ b/share/doc/stabs/Non_002dStab-Symbol-Types.html @@ -0,0 +1,164 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Non-Stab Symbol Types</title> + +<meta name="description" content="STABS: Non-Stab Symbol Types"> +<meta name="keywords" content="STABS: Non-Stab Symbol Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Stab-Types.html#Stab-Types" rel="up" title="Stab Types"> +<link href="Stab-Symbol-Types.html#Stab-Symbol-Types" rel="next" title="Stab Symbol Types"> +<link href="Stab-Types.html#Stab-Types" rel="previous" title="Stab Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Non_002dStab-Symbol-Types"></a> +<div class="header"> +<p> +Next: <a href="Stab-Symbol-Types.html#Stab-Symbol-Types" accesskey="n" rel="next">Stab Symbol Types</a>, Up: <a href="Stab-Types.html#Stab-Types" accesskey="u" rel="up">Stab Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Non_002dStab-Symbol-Types-1"></a> +<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. +</p> + +<dl compact="compact"> +<dt><code>0x0 N_UNDF</code></dt> +<dd><p>Undefined symbol +</p> +</dd> +<dt><code>0x2 N_ABS</code></dt> +<dd><p>File scope absolute symbol +</p> +</dd> +<dt><code>0x3 N_ABS | N_EXT</code></dt> +<dd><p>External absolute symbol +</p> +</dd> +<dt><code>0x4 N_TEXT</code></dt> +<dd><p>File scope text symbol +</p> +</dd> +<dt><code>0x5 N_TEXT | N_EXT</code></dt> +<dd><p>External text symbol +</p> +</dd> +<dt><code>0x6 N_DATA</code></dt> +<dd><p>File scope data symbol +</p> +</dd> +<dt><code>0x7 N_DATA | N_EXT</code></dt> +<dd><p>External data symbol +</p> +</dd> +<dt><code>0x8 N_BSS</code></dt> +<dd><p>File scope BSS symbol +</p> +</dd> +<dt><code>0x9 N_BSS | N_EXT</code></dt> +<dd><p>External BSS symbol +</p> +</dd> +<dt><code>0x0c N_FN_SEQ</code></dt> +<dd><p>Same as <code>N_FN</code>, for Sequent compilers +</p> +</dd> +<dt><code>0x0a N_INDR</code></dt> +<dd><p>Symbol is indirected to another symbol +</p> +</dd> +<dt><code>0x12 N_COMM</code></dt> +<dd><p>Common—visible after shared library dynamic link +</p> +</dd> +<dt><code>0x14 N_SETA</code></dt> +<dt><code>0x15 N_SETA | N_EXT</code></dt> +<dd><p>Absolute set element +</p> +</dd> +<dt><code>0x16 N_SETT</code></dt> +<dt><code>0x17 N_SETT | N_EXT</code></dt> +<dd><p>Text segment set element +</p> +</dd> +<dt><code>0x18 N_SETD</code></dt> +<dt><code>0x19 N_SETD | N_EXT</code></dt> +<dd><p>Data segment set element +</p> +</dd> +<dt><code>0x1a N_SETB</code></dt> +<dt><code>0x1b N_SETB | N_EXT</code></dt> +<dd><p>BSS segment set element +</p> +</dd> +<dt><code>0x1c N_SETV</code></dt> +<dt><code>0x1d N_SETV | N_EXT</code></dt> +<dd><p>Pointer to set vector +</p> +</dd> +<dt><code>0x1e N_WARNING</code></dt> +<dd><p>Print a warning message during linking +</p> +</dd> +<dt><code>0x1f N_FN</code></dt> +<dd><p>File name of a <samp>.o</samp> file +</p></dd> +</dl> + + + + +</body> +</html> diff --git a/share/doc/stabs/Overview.html b/share/doc/stabs/Overview.html new file mode 100644 index 0000000..cc27976 --- /dev/null +++ b/share/doc/stabs/Overview.html @@ -0,0 +1,109 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Overview</title> + +<meta name="description" content="STABS: Overview"> +<meta name="keywords" content="STABS: Overview"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Flow.html#Flow" rel="next" title="Flow"> +<link href="index.html#Top" rel="previous" title="Top"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Overview"></a> +<div class="header"> +<p> +Next: <a href="Program-Structure.html#Program-Structure" accesskey="n" rel="next">Program Structure</a>, Previous: <a href="index.html#Top" accesskey="p" rel="previous">Top</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Overview-of-Stabs"></a> +<h2 class="chapter">1 Overview of Stabs</h2> + +<p><em>Stabs</em> 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> +<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. +</p> + +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Flow.html#Flow" accesskey="1">Flow</a>:</td><td> </td><td align="left" valign="top">Overview of debugging information flow +</td></tr> +<tr><td align="left" valign="top">• <a href="Stabs-Format.html#Stabs-Format" accesskey="2">Stabs Format</a>:</td><td> </td><td align="left" valign="top">Overview of stab format +</td></tr> +<tr><td align="left" valign="top">• <a href="String-Field.html#String-Field" accesskey="3">String Field</a>:</td><td> </td><td align="left" valign="top">The string field +</td></tr> +<tr><td align="left" valign="top">• <a href="C-Example.html#C-Example" accesskey="4">C Example</a>:</td><td> </td><td align="left" valign="top">A simple example in C source +</td></tr> +<tr><td align="left" valign="top">• <a href="Assembly-Code.html#Assembly-Code" accesskey="5">Assembly Code</a>:</td><td> </td><td align="left" valign="top">The simple example at the assembly level +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Parameters.html b/share/doc/stabs/Parameters.html new file mode 100644 index 0000000..56ee66e --- /dev/null +++ b/share/doc/stabs/Parameters.html @@ -0,0 +1,135 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Parameters</title> + +<meta name="description" content="STABS: Parameters"> +<meta name="keywords" content="STABS: Parameters"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Register-Parameters.html#Register-Parameters" rel="next" title="Register Parameters"> +<link href="Based-Variables.html#Based-Variables" rel="previous" title="Based Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Parameters"></a> +<div class="header"> +<p> +Previous: <a href="Based-Variables.html#Based-Variables" accesskey="p" rel="previous">Based Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Parameters-1"></a> +<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"></a> +<a name="index-C_005fPSYM"></a> +<p>Parameters passed on the stack use the symbol descriptor ‘<samp>p</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> +<p>As a simple example, the code: +</p> +<div class="example"> +<pre class="example">main (argc, argv) + int argc; + char **argv; +</pre></div> + +<p>produces the stabs: +</p> +<div class="example"> +<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></div> + +<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. +</p> +<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). +</p> +<div class="example"> +<pre class="example">pP (<<??>>) +pF Fortran function parameter +X (function result variable) +</pre></div> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Register-Parameters.html#Register-Parameters" accesskey="1">Register Parameters</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Local-Variable-Parameters.html#Local-Variable-Parameters" accesskey="2">Local Variable Parameters</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Reference-Parameters.html#Reference-Parameters" accesskey="3">Reference Parameters</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Conformant-Arrays.html#Conformant-Arrays" accesskey="4">Conformant Arrays</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<div class="header"> +<p> +Previous: <a href="Based-Variables.html#Based-Variables" accesskey="p" rel="previous">Based Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Procedures.html b/share/doc/stabs/Procedures.html new file mode 100644 index 0000000..80f4983 --- /dev/null +++ b/share/doc/stabs/Procedures.html @@ -0,0 +1,187 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Procedures</title> + +<meta name="description" content="STABS: Procedures"> +<meta name="keywords" content="STABS: Procedures"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Nested-Procedures.html#Nested-Procedures" rel="next" title="Nested Procedures"> +<link href="Line-Numbers.html#Line-Numbers" rel="previous" title="Line Numbers"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Procedures"></a> +<div class="header"> +<p> +Next: <a href="Nested-Procedures.html#Nested-Procedures" accesskey="n" rel="next">Nested Procedures</a>, Previous: <a href="Line-Numbers.html#Line-Numbers" accesskey="p" rel="previous">Line Numbers</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Procedures-1"></a> +<h3 class="section">2.5 Procedures</h3> + +<a name="index-N_005fFUN_002c-for-functions"></a> +<a name="index-N_005fFNAME"></a> +<a name="index-N_005fSTSYM_002c-for-functions-_0028Sun-acc_0029"></a> +<a name="index-N_005fGSYM_002c-for-functions-_0028Sun-acc_0029"></a> +<p>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"></a> +<p>A function is represented by an ‘<samp>F</samp>’ symbol descriptor for a global +(extern) function, and ‘<samp>f</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> +<p>The type information of the stab represents the return type of the +function; thus ‘<samp>foo:f5</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. +</p> +<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>;</samp>’. An argument type of 0 means that additional +arguments are being passed, whose types and number may vary (‘<samp>...</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> +<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>P</samp>’ followed by the return +type of the function, followed by the arguments, each preceded by +‘<samp>;</samp>’, as in a stab with symbol descriptor ‘<samp>f</samp>’ or ‘<samp>F</samp>’. +This use of symbol descriptor ‘<samp>P</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> +<p>The AIX documentation also defines symbol descriptor ‘<samp>J</samp>’ as an +internal function. I assume this means a function nested within another +function. It also says symbol descriptor ‘<samp>m</samp>’ is a module in +Modula-2 or extended Pascal. +</p> +<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>I</samp>’, ‘<samp>P</samp>’, and +‘<samp>Q</samp>’ for internal, global, and static procedures, respectively. +These symbol descriptors are unusual in that they are not followed by +type information. +</p> +<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. +</p> +<div class="example"> +<pre class="example">.stabs "main:F1",36,0,0,_main # <span class="roman">36 is N_FUN</span> +</pre></div> + +<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> +<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. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Nested-Procedures.html#Nested-Procedures" accesskey="n" rel="next">Nested Procedures</a>, Previous: <a href="Line-Numbers.html#Line-Numbers" accesskey="p" rel="previous">Line Numbers</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Program-Structure.html b/share/doc/stabs/Program-Structure.html new file mode 100644 index 0000000..b9fe0df --- /dev/null +++ b/share/doc/stabs/Program-Structure.html @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Program Structure</title> + +<meta name="description" content="STABS: Program Structure"> +<meta name="keywords" content="STABS: Program Structure"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Main-Program.html#Main-Program" rel="next" title="Main Program"> +<link href="Assembly-Code.html#Assembly-Code" rel="previous" title="Assembly Code"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Program-Structure"></a> +<div class="header"> +<p> +Next: <a href="Constants.html#Constants" accesskey="n" rel="next">Constants</a>, Previous: <a href="Overview.html#Overview" accesskey="p" rel="previous">Overview</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Encoding-the-Structure-of-the-Program"></a> +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Main-Program.html#Main-Program" accesskey="1">Main Program</a>:</td><td> </td><td align="left" valign="top">Indicate what the main program is +</td></tr> +<tr><td align="left" valign="top">• <a href="Source-Files.html#Source-Files" accesskey="2">Source Files</a>:</td><td> </td><td align="left" valign="top">The path and name of the source file +</td></tr> +<tr><td align="left" valign="top">• <a href="Include-Files.html#Include-Files" accesskey="3">Include Files</a>:</td><td> </td><td align="left" valign="top">Names of include files +</td></tr> +<tr><td align="left" valign="top">• <a href="Line-Numbers.html#Line-Numbers" accesskey="4">Line Numbers</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Procedures.html#Procedures" accesskey="5">Procedures</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Nested-Procedures.html#Nested-Procedures" accesskey="6">Nested Procedures</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Block-Structure.html#Block-Structure" accesskey="7">Block Structure</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Alternate-Entry-Points.html#Alternate-Entry-Points" accesskey="8">Alternate Entry Points</a>:</td><td> </td><td align="left" valign="top">Entering procedures except at the beginning. +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Protections.html b/share/doc/stabs/Protections.html new file mode 100644 index 0000000..7e14163 --- /dev/null +++ b/share/doc/stabs/Protections.html @@ -0,0 +1,161 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Protections</title> + +<meta name="description" content="STABS: Protections"> +<meta name="keywords" content="STABS: Protections"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Method-Modifiers.html#Method-Modifiers" rel="next" title="Method Modifiers"> +<link href="Member-Type-Descriptor.html#Member-Type-Descriptor" rel="previous" title="Member Type Descriptor"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Protections"></a> +<div class="header"> +<p> +Next: <a href="Method-Modifiers.html#Method-Modifiers" accesskey="n" rel="next">Method Modifiers</a>, Previous: <a href="Member-Type-Descriptor.html#Member-Type-Descriptor" accesskey="p" rel="previous">Member Type Descriptor</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Protections-1"></a> +<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> +<p>If the character following the ‘<samp><var>field-name</var>:</samp>’ part of the +string is ‘<samp>/</samp>’, then the next character is the visibility. ‘<samp>0</samp>’ +means private, ‘<samp>1</samp>’ means protected, and ‘<samp>2</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>9</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>9</samp>’ is not supported by GDB 4.11; this should be fixed +in the next GDB release. +</p> +<p>The following C<tt>++</tt> source: +</p> +<div class="example"> +<pre class="example">class vis { +private: + int priv; +protected: + char prot; +public: + float pub; +}; +</pre></div> + +<p>generates the following stab: +</p> +<div class="example"> +<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></div> + +<p>‘<samp>vis:T19=s12</samp>’ indicates that type number 19 is a 12 byte structure +named <code>vis</code> The <code>priv</code> field has public visibility +(‘<samp>/0</samp>’), type int (‘<samp>1</samp>’), and offset and size ‘<samp>,0,32;</samp>’. +The <code>prot</code> field has protected visibility (‘<samp>/1</samp>’), type char +(‘<samp>2</samp>’) and offset and size ‘<samp>,32,8;</samp>’. The <code>pub</code> field has +type float (‘<samp>12</samp>’), and offset and size ‘<samp>,64,32;</samp>’. +</p> +<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: +</p> +<div class="example"> +<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></div> + +<p>It generates the following stab. The digit in question is to the left +of an ‘<samp>A</samp>’ in each case. Notice also that in this case two symbol +descriptors apply to the class name struct tag and struct type. +</p> +<div class="display"> +<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></div> + +<div class="smallexample"> +<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></div> + +<hr> +<div class="header"> +<p> +Next: <a href="Method-Modifiers.html#Method-Modifiers" accesskey="n" rel="next">Method Modifiers</a>, Previous: <a href="Member-Type-Descriptor.html#Member-Type-Descriptor" accesskey="p" rel="previous">Member Type Descriptor</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Questions.html b/share/doc/stabs/Questions.html new file mode 100644 index 0000000..c2dc465 --- /dev/null +++ b/share/doc/stabs/Questions.html @@ -0,0 +1,102 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Questions</title> + +<meta name="description" content="STABS: Questions"> +<meta name="keywords" content="STABS: Questions"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Stab-Sections.html#Stab-Sections" rel="next" title="Stab Sections"> +<link href="N_005fLENG.html#N_005fLENG" rel="previous" title="N_LENG"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Questions"></a> +<div class="header"> +<p> +Next: <a href="Stab-Sections.html#Stab-Sections" accesskey="n" rel="next">Stab Sections</a>, Previous: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="p" rel="previous">Expanded Reference</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Questions-and-Anomalies"></a> +<h2 class="appendix">Appendix E Questions and Anomalies</h2> + +<ul> +<li> 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>dbxout.c</samp> and +putting a line number in desc is controlled by ‘<samp>#ifdef +WINNING_GDB</samp>’, which defaults to false). GDB supposedly uses this +information if you say ‘<samp>list <var>var</var></samp>’. In reality, <var>var</var> can +be a variable defined in the program and GDB says ‘<samp>function +<var>var</var> not defined</samp>’. + +</li><li> In GNU C stabs, there seems to be no way to differentiate tag types: +structures, unions, and enums (symbol descriptor ‘<samp>T</samp>’) and typedefs +(symbol descriptor ‘<samp>t</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>-ansi</samp>’ and +‘<samp>-traditional</samp>’ compiler options. (Bugs gcc/1063, gdb/1066.) + +</li><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.) +</li></ul> + + + + +</body> +</html> diff --git a/share/doc/stabs/Reference-Parameters.html b/share/doc/stabs/Reference-Parameters.html new file mode 100644 index 0000000..b444d99 --- /dev/null +++ b/share/doc/stabs/Reference-Parameters.html @@ -0,0 +1,83 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Reference Parameters</title> + +<meta name="description" content="STABS: Reference Parameters"> +<meta name="keywords" content="STABS: Reference Parameters"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Parameters.html#Parameters" rel="up" title="Parameters"> +<link href="Conformant-Arrays.html#Conformant-Arrays" rel="next" title="Conformant Arrays"> +<link href="Local-Variable-Parameters.html#Local-Variable-Parameters" rel="previous" title="Local Variable Parameters"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Reference-Parameters"></a> +<div class="header"> +<p> +Next: <a href="Conformant-Arrays.html#Conformant-Arrays" accesskey="n" rel="next">Conformant Arrays</a>, Previous: <a href="Local-Variable-Parameters.html#Local-Variable-Parameters" accesskey="p" rel="previous">Local Variable Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Passing-Parameters-by-Reference"></a> +<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>v</samp>’ if it is in the +argument list, or ‘<samp>a</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>p</samp>’ and ‘<samp>R</samp>’, +respectively. I believe ‘<samp>a</samp>’ is an AIX invention; ‘<samp>v</samp>’ is +supported by all stabs-using systems as far as I know. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Register-Parameters.html b/share/doc/stabs/Register-Parameters.html new file mode 100644 index 0000000..92a74db --- /dev/null +++ b/share/doc/stabs/Register-Parameters.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Register Parameters</title> + +<meta name="description" content="STABS: Register Parameters"> +<meta name="keywords" content="STABS: Register Parameters"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Parameters.html#Parameters" rel="up" title="Parameters"> +<link href="Local-Variable-Parameters.html#Local-Variable-Parameters" rel="next" title="Local Variable Parameters"> +<link href="Parameters.html#Parameters" rel="previous" title="Parameters"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Register-Parameters"></a> +<div class="header"> +<p> +Next: <a href="Local-Variable-Parameters.html#Local-Variable-Parameters" accesskey="n" rel="next">Local Variable Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Passing-Parameters-in-Registers"></a> +<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: +</p> +<div class="example"> +<pre class="example">.stabs "arg:p1" . . . ; N_PSYM +.stabs "arg:r1" . . . ; N_RSYM +</pre></div> + +<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"></a> +<a name="index-N_005fRSYM_002c-for-parameters"></a> +<p>Because that approach is kind of ugly, some compilers use symbol +descriptor ‘<samp>P</samp>’ or ‘<samp>R</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>P</samp>’ +and ‘<samp>R</samp>’ mean the same thing; the difference is that ‘<samp>P</samp>’ is a +GNU invention and ‘<samp>R</samp>’ is an IBM (XCOFF) invention. As of version +4.9, GDB should handle either one. +</p> +<p>There is at least one case where GCC uses a ‘<samp>p</samp>’ and ‘<samp>r</samp>’ pair +rather than ‘<samp>P</samp>’; this is where the argument is passed in the +argument list and then loaded into a register. +</p> +<p>According to the AIX documentation, symbol descriptor ‘<samp>D</samp>’ is for a +parameter passed in a floating point register. This seems +unnecessary—why not just use ‘<samp>R</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. +</p> +<p>On the sparc and hppa, for a ‘<samp>P</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>p</samp>’ and ‘<samp>r</samp>’ pair (using Sun +<code>cc</code>) or a ‘<samp>p</samp>’ symbol. However, if a (small) structure is +really in a register, ‘<samp>r</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>p</samp>’ and ‘<samp>r</samp>’ pair! I +believe that symbol descriptor ‘<samp>i</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>). +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Local-Variable-Parameters.html#Local-Variable-Parameters" accesskey="n" rel="next">Local Variable Parameters</a>, Up: <a href="Parameters.html#Parameters" accesskey="u" rel="up">Parameters</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Register-Variables.html b/share/doc/stabs/Register-Variables.html new file mode 100644 index 0000000..4c1ecfe --- /dev/null +++ b/share/doc/stabs/Register-Variables.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Register Variables</title> + +<meta name="description" content="STABS: Register Variables"> +<meta name="keywords" content="STABS: Register Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Common-Blocks.html#Common-Blocks" rel="next" title="Common Blocks"> +<link href="Global-Variables.html#Global-Variables" rel="previous" title="Global Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Register-Variables"></a> +<div class="header"> +<p> +Next: <a href="Common-Blocks.html#Common-Blocks" accesskey="n" rel="next">Common Blocks</a>, Previous: <a href="Global-Variables.html#Global-Variables" accesskey="p" rel="previous">Global Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Register-Variables-1"></a> +<h3 class="section">4.3 Register Variables</h3> + +<a name="index-N_005fRSYM"></a> +<a name="index-C_005fRSYM"></a> +<p>Register variables have their own stab type, <code>N_RSYM</code> +(<code>C_RSYM</code> for XCOFF), and their own symbol descriptor, ‘<samp>r</samp>’. +The stab’s value is the number of the register where the variable data +will be stored. +</p> +<p>AIX defines a separate symbol descriptor ‘<samp>d</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>d</samp>’. +</p> +<p>If the register is explicitly allocated to a global variable, but not +initialized, as in: +</p> +<div class="example"> +<pre class="example">register int g_bar asm ("%g5"); +</pre></div> + +<p>then the stab may be emitted at the end of the object file, with +the other bss symbols. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Simple-Classes.html b/share/doc/stabs/Simple-Classes.html new file mode 100644 index 0000000..816f4e9 --- /dev/null +++ b/share/doc/stabs/Simple-Classes.html @@ -0,0 +1,174 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Simple Classes</title> + +<meta name="description" content="STABS: Simple Classes"> +<meta name="keywords" content="STABS: Simple Classes"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Class-Instance.html#Class-Instance" rel="next" title="Class Instance"> +<link href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" rel="previous" title="Basic Cplusplus Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Simple-Classes"></a> +<div class="header"> +<p> +Next: <a href="Class-Instance.html#Class-Instance" accesskey="n" rel="next">Class Instance</a>, Previous: <a href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" accesskey="p" rel="previous">Basic Cplusplus Types</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Simple-Class-Definition"></a> +<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> +<p>Consider the following very simple class definition. +</p> +<div class="example"> +<pre class="example">class baseA { +public: + int Adat; + int Ameth(int in, char other); +}; +</pre></div> + +<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> +<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> +<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> +<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>name:</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> +<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>#</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>f</samp>’ type descriptor instead; see +<a href="Function-Types.html#Function-Types">Function Types</a>. +</p> +<p>The format of an overloaded operator method name differs from that of +other methods. It is ‘<samp>op$::<var>operator-name</var>.</samp>’ where +<var>operator-name</var> is the operator name such as ‘<samp>+</samp>’ or ‘<samp>+=</samp>’. +The name ends with a period, and any characters except the period can +occur in the <var>operator-name</var> string. +</p> +<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>ic</samp>’. +</p> +<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>A</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. +</p> + +<div class="display"> +<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></div> + +<div class="smallexample"> +<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></div> + +<hr> +<div class="header"> +<p> +Next: <a href="Class-Instance.html#Class-Instance" accesskey="n" rel="next">Class Instance</a>, Previous: <a href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types" accesskey="p" rel="previous">Basic Cplusplus Types</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Source-Files.html b/share/doc/stabs/Source-Files.html new file mode 100644 index 0000000..5eccd96 --- /dev/null +++ b/share/doc/stabs/Source-Files.html @@ -0,0 +1,154 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Source Files</title> + +<meta name="description" content="STABS: Source Files"> +<meta name="keywords" content="STABS: Source Files"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure"> +<link href="Include-Files.html#Include-Files" rel="next" title="Include Files"> +<link href="Main-Program.html#Main-Program" rel="previous" title="Main Program"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Source-Files"></a> +<div class="header"> +<p> +Next: <a href="Include-Files.html#Include-Files" accesskey="n" rel="next">Include Files</a>, Previous: <a href="Main-Program.html#Main-Program" accesskey="p" rel="previous">Main Program</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Paths-and-Names-of-the-Source-Files"></a> +<h3 class="section">2.2 Paths and Names of the Source Files</h3> + +<a name="index-N_005fSO"></a> +<p>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> +<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. +</p> +<dl compact="compact"> +<dt><code>N_SO_AS</code> (0x1)</dt> +<dd><p>Assembly language +</p></dd> +<dt><code>N_SO_C</code> (0x2)</dt> +<dd><p>K&R traditional C +</p></dd> +<dt><code>N_SO_ANSI_C</code> (0x3)</dt> +<dd><p>ANSI C +</p></dd> +<dt><code>N_SO_CC</code> (0x4)</dt> +<dd><p>C++ +</p></dd> +<dt><code>N_SO_FORTRAN</code> (0x5)</dt> +<dd><p>Fortran +</p></dd> +<dt><code>N_SO_PASCAL</code> (0x6)</dt> +<dd><p>Pascal +</p></dd> +<dt><code>N_SO_FORTRAN90</code> (0x7)</dt> +<dd><p>Fortran90 +</p></dd> +<dt><code>N_SO_OBJC</code> (0x32)</dt> +<dd><p>Objective-C +</p></dd> +<dt><code>N_SO_OBJCPLUS</code> (0x33)</dt> +<dd><p>Objective-C++ +</p></dd> +</dl> + +<p>Some compilers (for example, GCC2 and SunOS4 <samp>/bin/cc</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> +<p>For example: +</p> +<div class="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></div> + +<a name="index-C_005fFILE"></a> +<p>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. +</p> +<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). +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Include-Files.html#Include-Files" accesskey="n" rel="next">Include Files</a>, Previous: <a href="Main-Program.html#Main-Program" accesskey="p" rel="previous">Main Program</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Stab-Section-Basics.html b/share/doc/stabs/Stab-Section-Basics.html new file mode 100644 index 0000000..48a3512 --- /dev/null +++ b/share/doc/stabs/Stab-Section-Basics.html @@ -0,0 +1,156 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stab Section Basics</title> + +<meta name="description" content="STABS: Stab Section Basics"> +<meta name="keywords" content="STABS: Stab Section Basics"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Stab-Sections.html#Stab-Sections" rel="up" title="Stab Sections"> +<link href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" rel="next" title="ELF Linker Relocation"> +<link href="Stab-Sections.html#Stab-Sections" rel="previous" title="Stab Sections"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stab-Section-Basics"></a> +<div class="header"> +<p> +Next: <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" accesskey="n" rel="next">ELF Linker Relocation</a>, Up: <a href="Stab-Sections.html#Stab-Sections" accesskey="u" rel="up">Stab Sections</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="How-to-Embed-Stabs-in-Sections"></a> +<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> +<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: +</p> +<dl compact="compact"> +<dt><code>n_strx</code></dt> +<dd><p>Offset in the <code>.stabstr</code> section to the source filename. +</p> +</dd> +<dt><code>n_type</code></dt> +<dd><p><code>N_UNDF</code>. +</p> +</dd> +<dt><code>n_other</code></dt> +<dd><p>Unused field, always zero. +This may eventually be used to hold overflows from the count in +the <code>n_desc</code> field. +</p> +</dd> +<dt><code>n_desc</code></dt> +<dd><p>Count of upcoming symbols, i.e., the number of remaining stabs for this +source file. +</p> +</dd> +<dt><code>n_value</code></dt> +<dd><p>Size of the string table fragment associated with this source file, in +bytes. +</p></dd> +</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> +<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> +<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> +<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. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" accesskey="n" rel="next">ELF Linker Relocation</a>, Up: <a href="Stab-Sections.html#Stab-Sections" accesskey="u" rel="up">Stab Sections</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Stab-Section-Transformations.html b/share/doc/stabs/Stab-Section-Transformations.html new file mode 100644 index 0000000..64a775b --- /dev/null +++ b/share/doc/stabs/Stab-Section-Transformations.html @@ -0,0 +1,115 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stab Section Transformations</title> + +<meta name="description" content="STABS: Stab Section Transformations"> +<meta name="keywords" content="STABS: Stab Section Transformations"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" rel="up" title="Transformations On Symbol Tables"> +<link href="Cplusplus.html#Cplusplus" rel="next" title="Cplusplus"> +<link href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" rel="previous" title="Transformations On Global Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stab-Section-Transformations"></a> +<div class="header"> +<p> +Previous: <a href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" accesskey="p" rel="previous">Transformations On Global Variables</a>, Up: <a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" accesskey="u" rel="up">Transformations On Symbol Tables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Transformations-of-Stabs-in-separate-sections"></a> +<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> +<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 +</p> +<div class="example"> +<pre class="example">static int ld = 5; +</pre></div> + +<p>appears within a function, then the assembly language output from the +compiler contains: +</p> +<div class="example"> +<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></div> + +<p>Because the value is formed by subtracting one symbol from another, the +value is absolute, not relocatable, and so the object file contains +</p> +<div class="example"> +<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></div> + +<p>without any relocations, and the executable file also contains +</p> +<div class="example"> +<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></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Stab-Sections.html b/share/doc/stabs/Stab-Sections.html new file mode 100644 index 0000000..939c78b --- /dev/null +++ b/share/doc/stabs/Stab-Sections.html @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stab Sections</title> + +<meta name="description" content="STABS: Stab Sections"> +<meta name="keywords" content="STABS: Stab Sections"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Stab-Section-Basics.html#Stab-Section-Basics" rel="next" title="Stab Section Basics"> +<link href="Questions.html#Questions" rel="previous" title="Questions"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stab-Sections"></a> +<div class="header"> +<p> +Next: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="Questions.html#Questions" accesskey="p" rel="previous">Questions</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Using-Stabs-in-Their-Own-Sections"></a> +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Stab-Section-Basics.html#Stab-Section-Basics" accesskey="1">Stab Section Basics</a>:</td><td> </td><td align="left" valign="top">How to embed stabs in sections +</td></tr> +<tr><td align="left" valign="top">• <a href="ELF-Linker-Relocation.html#ELF-Linker-Relocation" accesskey="2">ELF Linker Relocation</a>:</td><td> </td><td align="left" valign="top">Sun ELF hacks +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Stab-Symbol-Types.html b/share/doc/stabs/Stab-Symbol-Types.html new file mode 100644 index 0000000..c531802 --- /dev/null +++ b/share/doc/stabs/Stab-Symbol-Types.html @@ -0,0 +1,276 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stab Symbol Types</title> + +<meta name="description" content="STABS: Stab Symbol Types"> +<meta name="keywords" content="STABS: Stab Symbol Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Stab-Types.html#Stab-Types" rel="up" title="Stab Types"> +<link href="Symbol-Descriptors.html#Symbol-Descriptors" rel="next" title="Symbol Descriptors"> +<link href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" rel="previous" title="Non-Stab Symbol Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stab-Symbol-Types"></a> +<div class="header"> +<p> +Previous: <a href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" accesskey="p" rel="previous">Non-Stab Symbol Types</a>, Up: <a href="Stab-Types.html#Stab-Types" accesskey="u" rel="up">Stab Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Stab-Symbol-Types-1"></a> +<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. +</p> +<dl compact="compact"> +<dt><code>0x20 N_GSYM</code></dt> +<dd><p>Global symbol; see <a href="Global-Variables.html#Global-Variables">Global Variables</a>. +</p> +</dd> +<dt><code>0x22 N_FNAME</code></dt> +<dd><p>Function name (for BSD Fortran); see <a href="Procedures.html#Procedures">Procedures</a>. +</p> +</dd> +<dt><code>0x24 N_FUN</code></dt> +<dd><p>Function name (see <a href="Procedures.html#Procedures">Procedures</a>) or text segment variable +(see <a href="Statics.html#Statics">Statics</a>). +</p> +</dd> +<dt><code>0x26 N_STSYM</code></dt> +<dd><p>Data segment file-scope variable; see <a href="Statics.html#Statics">Statics</a>. +</p> +</dd> +<dt><code>0x28 N_LCSYM</code></dt> +<dd><p>BSS segment file-scope variable; see <a href="Statics.html#Statics">Statics</a>. +</p> +</dd> +<dt><code>0x2a N_MAIN</code></dt> +<dd><p>Name of main routine; see <a href="Main-Program.html#Main-Program">Main Program</a>. +</p> +</dd> +<dt><code>0x2c N_ROSYM</code></dt> +<dd><p>Variable in <code>.rodata</code> section; see <a href="Statics.html#Statics">Statics</a>. +</p> +</dd> +<dt><code>0x30 N_PC</code></dt> +<dd><p>Global symbol (for Pascal); see <a href="N_005fPC.html#N_005fPC">N_PC</a>. +</p> +</dd> +<dt><code>0x32 N_NSYMS</code></dt> +<dd><p>Number of symbols (according to Ultrix V4.0); see <a href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a>. +</p> +</dd> +<dt><code>0x34 N_NOMAP</code></dt> +<dd><p>No DST map; see <a href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a>. +</p> +</dd> +<dt><code>0x36 N_MAC_DEFINE</code></dt> +<dd><p>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>. +</p> +</dd> +<dt><code>0x38 N_OBJ</code></dt> +<dd><p>Object file (Solaris2). +</p> +</dd> +<dt><code>0x3a N_MAC_UNDEF</code></dt> +<dd><p>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>. +</p> +</dd> +<dt><code>0x3c N_OPT</code></dt> +<dd><p>Debugger options (Solaris2). +</p> +</dd> +<dt><code>0x40 N_RSYM</code></dt> +<dd><p>Register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>. +</p> +</dd> +<dt><code>0x42 N_M2C</code></dt> +<dd><p>Modula-2 compilation unit; see <a href="N_005fM2C.html#N_005fM2C">N_M2C</a>. +</p> +</dd> +<dt><code>0x44 N_SLINE</code></dt> +<dd><p>Line number in text segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>. +</p> +</dd> +<dt><code>0x46 N_DSLINE</code></dt> +<dd><p>Line number in data segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>. +</p> +</dd> +<dt><code>0x48 N_BSLINE</code></dt> +<dd><p>Line number in bss segment; see <a href="Line-Numbers.html#Line-Numbers">Line Numbers</a>. +</p> +</dd> +<dt><code>0x48 N_BROWS</code></dt> +<dd><p>Sun source code browser, path to <samp>.cb</samp> file; see <a href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a>. +</p> +</dd> +<dt><code>0x4a N_DEFD</code></dt> +<dd><p>GNU Modula2 definition module dependency; see <a href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a>. +</p> +</dd> +<dt><code>0x4c N_FLINE</code></dt> +<dd><p>Function start/body/end line numbers (Solaris2). +</p> +</dd> +<dt><code>0x50 N_EHDECL</code></dt> +<dd><p>GNU C<tt>++</tt> exception variable; see <a href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a>. +</p> +</dd> +<dt><code>0x50 N_MOD2</code></dt> +<dd><p>Modula2 info "for imc" (according to Ultrix V4.0); see <a href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a>. +</p> +</dd> +<dt><code>0x54 N_CATCH</code></dt> +<dd><p>GNU C<tt>++</tt> <code>catch</code> clause; see <a href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a>. +</p> +</dd> +<dt><code>0x60 N_SSYM</code></dt> +<dd><p>Structure of union element; see <a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a>. +</p> +</dd> +<dt><code>0x62 N_ENDM</code></dt> +<dd><p>Last stab for module (Solaris2). +</p> +</dd> +<dt><code>0x64 N_SO</code></dt> +<dd><p>Path and name of source file; see <a href="Source-Files.html#Source-Files">Source Files</a>. +</p> +</dd> +<dt><code>0x80 N_LSYM</code></dt> +<dd><p>Stack variable (see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>) or type (see <a href="Typedefs.html#Typedefs">Typedefs</a>). +</p> +</dd> +<dt><code>0x82 N_BINCL</code></dt> +<dd><p>Beginning of an include file (Sun only); see <a href="Include-Files.html#Include-Files">Include Files</a>. +</p> +</dd> +<dt><code>0x84 N_SOL</code></dt> +<dd><p>Name of include file; see <a href="Include-Files.html#Include-Files">Include Files</a>. +</p> +</dd> +<dt><code>0xa0 N_PSYM</code></dt> +<dd><p>Parameter variable; see <a href="Parameters.html#Parameters">Parameters</a>. +</p> +</dd> +<dt><code>0xa2 N_EINCL</code></dt> +<dd><p>End of an include file; see <a href="Include-Files.html#Include-Files">Include Files</a>. +</p> +</dd> +<dt><code>0xa4 N_ENTRY</code></dt> +<dd><p>Alternate entry point; see <a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a>. +</p> +</dd> +<dt><code>0xc0 N_LBRAC</code></dt> +<dd><p>Beginning of a lexical block; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>. +</p> +</dd> +<dt><code>0xc2 N_EXCL</code></dt> +<dd><p>Place holder for a deleted include file; see <a href="Include-Files.html#Include-Files">Include Files</a>. +</p> +</dd> +<dt><code>0xc4 N_SCOPE</code></dt> +<dd><p>Modula2 scope information (Sun linker); see <a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a>. +</p> +</dd> +<dt><code>0xe0 N_RBRAC</code></dt> +<dd><p>End of a lexical block; see <a href="Block-Structure.html#Block-Structure">Block Structure</a>. +</p> +</dd> +<dt><code>0xe2 N_BCOMM</code></dt> +<dd><p>Begin named common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>. +</p> +</dd> +<dt><code>0xe4 N_ECOMM</code></dt> +<dd><p>End named common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>. +</p> +</dd> +<dt><code>0xe8 N_ECOML</code></dt> +<dd><p>Member of a common block; see <a href="Common-Blocks.html#Common-Blocks">Common Blocks</a>. +</p> +</dd> +<dt><code>0xea N_WITH</code></dt> +<dd><p>Pascal <code>with</code> statement: type,,0,0,offset (Solaris2). +</p> +</dd> +<dt><code>0xf0 N_NBTEXT</code></dt> +<dd><p>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>. +</p> +</dd> +<dt><code>0xf2 N_NBDATA</code></dt> +<dd><p>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>. +</p> +</dd> +<dt><code>0xf4 N_NBBSS</code></dt> +<dd><p>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>. +</p> +</dd> +<dt><code>0xf6 N_NBSTS</code></dt> +<dd><p>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>. +</p> +</dd> +<dt><code>0xf8 N_NBLCS</code></dt> +<dd><p>Gould non-base registers; see <a href="Gould.html#Gould">Gould</a>. +</p></dd> +</dl> + + +<hr> +<div class="header"> +<p> +Previous: <a href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" accesskey="p" rel="previous">Non-Stab Symbol Types</a>, Up: <a href="Stab-Types.html#Stab-Types" accesskey="u" rel="up">Stab Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Stab-Types.html b/share/doc/stabs/Stab-Types.html new file mode 100644 index 0000000..b07968f --- /dev/null +++ b/share/doc/stabs/Stab-Types.html @@ -0,0 +1,90 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stab Types</title> + +<meta name="description" content="STABS: Stab Types"> +<meta name="keywords" content="STABS: Stab Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" rel="next" title="Non-Stab Symbol Types"> +<link href="Static-Members.html#Static-Members" rel="previous" title="Static Members"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stab-Types"></a> +<div class="header"> +<p> +Next: <a href="Symbol-Descriptors.html#Symbol-Descriptors" accesskey="n" rel="next">Symbol Descriptors</a>, Previous: <a href="Cplusplus.html#Cplusplus" accesskey="p" rel="previous">Cplusplus</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Table-of-Stab-Types"></a> +<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> +<p>The symbolic names are defined in the file <samp>include/aout/stabs.def</samp>. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types" accesskey="1">Non-Stab Symbol Types</a>:</td><td> </td><td align="left" valign="top">Types from 0 to 0x1f +</td></tr> +<tr><td align="left" valign="top">• <a href="Stab-Symbol-Types.html#Stab-Symbol-Types" accesskey="2">Stab Symbol Types</a>:</td><td> </td><td align="left" valign="top">Types from 0x20 to 0xff +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Stabs-Format.html b/share/doc/stabs/Stabs-Format.html new file mode 100644 index 0000000..db7b793 --- /dev/null +++ b/share/doc/stabs/Stabs-Format.html @@ -0,0 +1,107 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stabs Format</title> + +<meta name="description" content="STABS: Stabs Format"> +<meta name="keywords" content="STABS: Stabs Format"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Overview.html#Overview" rel="up" title="Overview"> +<link href="String-Field.html#String-Field" rel="next" title="String Field"> +<link href="Flow.html#Flow" rel="previous" title="Flow"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stabs-Format"></a> +<div class="header"> +<p> +Next: <a href="String-Field.html#String-Field" accesskey="n" rel="next">String Field</a>, Previous: <a href="Flow.html#Flow" accesskey="p" rel="previous">Flow</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Overview-of-Stab-Format"></a> +<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> +<p>The overall format of each class of stab is: +</p> +<div class="example"> +<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></div> + +<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> +<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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Stack-Variables.html b/share/doc/stabs/Stack-Variables.html new file mode 100644 index 0000000..004dc7e --- /dev/null +++ b/share/doc/stabs/Stack-Variables.html @@ -0,0 +1,119 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Stack Variables</title> + +<meta name="description" content="STABS: Stack Variables"> +<meta name="keywords" content="STABS: Stack Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Global-Variables.html#Global-Variables" rel="next" title="Global Variables"> +<link href="Variables.html#Variables" rel="previous" title="Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Stack-Variables"></a> +<div class="header"> +<p> +Next: <a href="Global-Variables.html#Global-Variables" accesskey="n" rel="next">Global Variables</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Automatic-Variables-Allocated-on-the-Stack"></a> +<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 +<em>automatic</em>), 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"></a> +<a name="index-C_005fLSYM"></a> +<p>Each variable allocated on the stack has a stab with the symbol +descriptor omitted. Since type information should begin with a digit, +‘<samp>-</samp>’, or ‘<samp>(</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>=</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> +<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> +<p>For example, the following C code: +</p> +<div class="example"> +<pre class="example">int +main () +{ + int x; +} +</pre></div> + +<p>produces the following stabs: +</p> +<div class="example"> +<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></div> + +<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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Static-Members.html b/share/doc/stabs/Static-Members.html new file mode 100644 index 0000000..7896353 --- /dev/null +++ b/share/doc/stabs/Static-Members.html @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Static Members</title> + +<meta name="description" content="STABS: Static Members"> +<meta name="keywords" content="STABS: Static Members"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Stab-Types.html#Stab-Types" rel="next" title="Stab Types"> +<link href="Virtual-Base-Classes.html#Virtual-Base-Classes" rel="previous" title="Virtual Base Classes"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Static-Members"></a> +<div class="header"> +<p> +Previous: <a href="Virtual-Base-Classes.html#Virtual-Base-Classes" accesskey="p" rel="previous">Virtual Base Classes</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Static-Members-1"></a> +<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> +<p><< How is this reflected in stabs? See Cygnus bug #677 for some info. >> +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Statics.html b/share/doc/stabs/Statics.html new file mode 100644 index 0000000..1e9f237 --- /dev/null +++ b/share/doc/stabs/Statics.html @@ -0,0 +1,142 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Statics</title> + +<meta name="description" content="STABS: Statics"> +<meta name="keywords" content="STABS: Statics"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Variables.html#Variables" rel="up" title="Variables"> +<link href="Based-Variables.html#Based-Variables" rel="next" title="Based Variables"> +<link href="Common-Blocks.html#Common-Blocks" rel="previous" title="Common Blocks"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Statics"></a> +<div class="header"> +<p> +Next: <a href="Based-Variables.html#Based-Variables" accesskey="n" rel="next">Based Variables</a>, Previous: <a href="Common-Blocks.html#Common-Blocks" accesskey="p" rel="previous">Common Blocks</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Static-Variables"></a> +<h3 class="section">4.5 Static Variables</h3> + +<p>Initialized static variables are represented by the ‘<samp>S</samp>’ and +‘<samp>V</samp>’ symbol descriptors. ‘<samp>S</samp>’ means file scope static, and +‘<samp>V</samp>’ means procedure scope static. One exception: in XCOFF, IBM’s +xlc compiler always uses ‘<samp>V</samp>’, and whether it is file scope or not +is distinguished by whether the stab is located within a function. +</p> +<a name="index-N_005fSTSYM"></a> +<a name="index-N_005fLCSYM"></a> +<a name="index-N_005fFUN_002c-for-variables"></a> +<a name="index-N_005fROSYM"></a> +<p>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> +<p>For example, the source lines: +</p> +<div class="example"> +<pre class="example">static const int var_const = 5; +static int var_init = 2; +static int var_noinit; +</pre></div> + +<p>yield the following stabs: +</p> +<div class="example"> +<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></div> + +<a name="index-C_005fSTSYM"></a> +<a name="index-C_005fBSTAT"></a> +<a name="index-C_005fESTAT"></a> +<p>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>.bs</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>.bs</samp>’. A <code>C_ESTAT</code> +(emitted with a ‘<samp>.es</samp>’ assembler directive) symbol ends the static +block; its name is ‘<samp>.es</samp>’ and its value and section are ignored. +</p> +<p>In ECOFF files, the storage class is used to specify the section, so the +stab type need not indicate the section. +</p> +<p>In ELF files, for the SunPRO compiler version 2.0.1, symbol descriptor +‘<samp>S</samp>’ means that the address is absolute (the linker relocates it) +and symbol descriptor ‘<samp>V</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>S</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>. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Based-Variables.html#Based-Variables" accesskey="n" rel="next">Based Variables</a>, Previous: <a href="Common-Blocks.html#Common-Blocks" accesskey="p" rel="previous">Common Blocks</a>, Up: <a href="Variables.html#Variables" accesskey="u" rel="up">Variables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/String-Field.html b/share/doc/stabs/String-Field.html new file mode 100644 index 0000000..84bb476 --- /dev/null +++ b/share/doc/stabs/String-Field.html @@ -0,0 +1,198 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: String Field</title> + +<meta name="description" content="STABS: String Field"> +<meta name="keywords" content="STABS: String Field"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Overview.html#Overview" rel="up" title="Overview"> +<link href="C-Example.html#C-Example" rel="next" title="C Example"> +<link href="Stabs-Format.html#Stabs-Format" rel="previous" title="Stabs Format"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="String-Field"></a> +<div class="header"> +<p> +Next: <a href="C-Example.html#C-Example" accesskey="n" rel="next">C Example</a>, Previous: <a href="Stabs-Format.html#Stabs-Format" accesskey="p" rel="previous">Stabs Format</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="The-String-Field"></a> +<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> +<p>The overall format of the string field for most stab types is: +</p> +<div class="example"> +<pre class="example">"<var>name</var>:<var>symbol-descriptor</var> <var>type-information</var>" +</pre></div> + +<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>:t10=*2</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> +<p>The <var>symbol-descriptor</var> following the ‘<samp>:</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>c</samp>’ +symbol descriptor is an exception in that it is not followed by type +information. See <a href="Constants.html#Constants">Constants</a>. +</p> +<p><var>type-information</var> is either a <var>type-number</var>, or +‘<samp><var>type-number</var>=</samp>’. A <var>type-number</var> alone is a type +reference, referring directly to a type that has already been defined. +</p> +<p>The ‘<samp><var>type-number</var>=</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>=</samp>’ and nested definitions. Also, the Lucid +compiler will repeat ‘<samp><var>type-number</var>=</samp>’ more than once if it +wants to define several type numbers at once. +</p> +<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>=</samp>’ then the number is a <var>type-reference</var>. +For a full description of types, <a href="Types.html#Types">Types</a>. +</p> +<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> +<p>There is an AIX extension for type attributes. Following the ‘<samp>=</samp>’ +are any number of type attributes. Each one starts with ‘<samp>@</samp>’ and +ends with ‘<samp>;</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>(</samp>’, or ‘<samp>-</samp>’; GDB may be unable to distinguish +those from the C<tt>++</tt> type descriptor ‘<samp>@</samp>’. The attributes are: +</p> +<dl compact="compact"> +<dt><code>a<var>boundary</var></code></dt> +<dd><p><var>boundary</var> is an integer specifying the alignment. I assume it +applies to all variables of this type. +</p> +</dd> +<dt><code>p<var>integer</var></code></dt> +<dd><p>Pointer class (for checking). Not sure what this means, or how +<var>integer</var> is interpreted. +</p> +</dd> +<dt><code>P</code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>s<var>size</var></code></dt> +<dd><p>Size in bits of a variable of this type. This is fully supported by GDB +4.11 and later. +</p> +</dd> +<dt><code>S</code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>V</code></dt> +<dd><p>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). +</p> +</dd> +</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>?</samp>’ instead of backslash. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="C-Example.html#C-Example" accesskey="n" rel="next">C Example</a>, Previous: <a href="Stabs-Format.html#Stabs-Format" accesskey="p" rel="previous">Stabs Format</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Strings.html b/share/doc/stabs/Strings.html new file mode 100644 index 0000000..b533112 --- /dev/null +++ b/share/doc/stabs/Strings.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Strings</title> + +<meta name="description" content="STABS: Strings"> +<meta name="keywords" content="STABS: Strings"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Enumerations.html#Enumerations" rel="next" title="Enumerations"> +<link href="Arrays.html#Arrays" rel="previous" title="Arrays"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Strings"></a> +<div class="header"> +<p> +Next: <a href="Enumerations.html#Enumerations" accesskey="n" rel="next">Enumerations</a>, Previous: <a href="Arrays.html#Arrays" accesskey="p" rel="previous">Arrays</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Strings-1"></a> +<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: +</p> +<dl compact="compact"> +<dt><code>n <var>type-information</var> ; <var>bytes</var></code></dt> +<dd><p><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. +</p> +</dd> +<dt><code>z <var>type-information</var> ; <var>bytes</var></code></dt> +<dd><p>Just like ‘<samp>n</samp>’ except that this is a gstring, not an ordinary +string. I don’t know the difference. +</p> +</dd> +<dt><code>N</code></dt> +<dd><p>Pascal Stringptr. What is this? This is an AIX feature. +</p></dd> +</dl> + +<p>Languages, such as CHILL which have a string type which is basically +just an array of characters use the ‘<samp>S</samp>’ type attribute +(see <a href="String-Field.html#String-Field">String Field</a>). +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Structures.html b/share/doc/stabs/Structures.html new file mode 100644 index 0000000..efa3519 --- /dev/null +++ b/share/doc/stabs/Structures.html @@ -0,0 +1,139 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Structures</title> + +<meta name="description" content="STABS: Structures"> +<meta name="keywords" content="STABS: Structures"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Typedefs.html#Typedefs" rel="next" title="Typedefs"> +<link href="Enumerations.html#Enumerations" rel="previous" title="Enumerations"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Structures"></a> +<div class="header"> +<p> +Next: <a href="Typedefs.html#Typedefs" accesskey="n" rel="next">Typedefs</a>, Previous: <a href="Enumerations.html#Enumerations" accesskey="p" rel="previous">Enumerations</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Structures-1"></a> +<h3 class="section">5.8 Structures</h3> + +<p>The encoding of structures in stabs can be shown with an example. +</p> +<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. +</p> +<div class="example"> +<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></div> + +<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>T</samp>’, for enumeration, structure, or tag type. +The type descriptor ‘<samp>s</samp>’ following the ‘<samp>16=</samp>’ of the type +definition narrows the symbol type to structure. +</p> +<p>Following the ‘<samp>s</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>:<var>type</var>, <var>bit offset from the start of the +struct</var>, <var>number of bits in the element</var></samp>’. +</p> +<div class="example"> +<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></div> + +<p>In this example, the first two structure elements are previously defined +types. For these, the type following the ‘<samp><var>name</var>:</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>:</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> +<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> +<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>. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Typedefs.html#Typedefs" accesskey="n" rel="next">Typedefs</a>, Previous: <a href="Enumerations.html#Enumerations" accesskey="p" rel="previous">Enumerations</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Subranges.html b/share/doc/stabs/Subranges.html new file mode 100644 index 0000000..27e7390 --- /dev/null +++ b/share/doc/stabs/Subranges.html @@ -0,0 +1,113 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Subranges</title> + +<meta name="description" content="STABS: Subranges"> +<meta name="keywords" content="STABS: Subranges"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Arrays.html#Arrays" rel="next" title="Arrays"> +<link href="Cross_002dReferences.html#Cross_002dReferences" rel="previous" title="Cross-References"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Subranges"></a> +<div class="header"> +<p> +Next: <a href="Arrays.html#Arrays" accesskey="n" rel="next">Arrays</a>, Previous: <a href="Cross_002dReferences.html#Cross_002dReferences" accesskey="p" rel="previous">Cross-References</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Subrange-Types"></a> +<h3 class="section">5.4 Subrange Types</h3> + +<p>The ‘<samp>r</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> +<p>Instead of an integer, either bound can be one of the following: +</p> +<dl compact="compact"> +<dt><code>A <var>offset</var></code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>T <var>offset</var></code></dt> +<dd><p>The bound is passed by value on the stack at offset <var>offset</var> from +the argument list. +</p> +</dd> +<dt><code>a <var>register-number</var></code></dt> +<dd><p>The bound is passed by reference in register number +<var>register-number</var>. +</p> +</dd> +<dt><code>t <var>register-number</var></code></dt> +<dd><p>The bound is passed by value in register number <var>register-number</var>. +</p> +</dd> +<dt><code>J</code></dt> +<dd><p>There is no bound. +</p></dd> +</dl> + +<p>Subranges are also used for builtin types; see <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">Traditional Builtin Types</a>. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Symbol-Descriptors.html b/share/doc/stabs/Symbol-Descriptors.html new file mode 100644 index 0000000..7dca1b5 --- /dev/null +++ b/share/doc/stabs/Symbol-Descriptors.html @@ -0,0 +1,219 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Symbol Descriptors</title> + +<meta name="description" content="STABS: Symbol Descriptors"> +<meta name="keywords" content="STABS: Symbol Descriptors"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Type-Descriptors.html#Type-Descriptors" rel="next" title="Type Descriptors"> +<link href="Stab-Symbol-Types.html#Stab-Symbol-Types" rel="previous" title="Stab Symbol Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Symbol-Descriptors"></a> +<div class="header"> +<p> +Next: <a href="Type-Descriptors.html#Type-Descriptors" accesskey="n" rel="next">Type Descriptors</a>, Previous: <a href="Stab-Types.html#Stab-Types" accesskey="p" rel="previous">Stab Types</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Table-of-Symbol-Descriptors"></a> +<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. +</p> +<dl compact="compact"> +<dt><code><var>digit</var></code></dt> +<dt><code>(</code></dt> +<dt><code>-</code></dt> +<dd><p>Variable on the stack; see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>. +</p> +</dd> +<dt><code>:</code></dt> +<dd><p>C<tt>++</tt> nested symbol; see See <a href="Nested-Symbols.html#Nested-Symbols">Nested Symbols</a>. +</p> +</dd> +<dt><code>a</code></dt> +<dd><p>Parameter passed by reference in register; see <a href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>. +</p> +</dd> +<dt><code>b</code></dt> +<dd><p>Based variable; see <a href="Based-Variables.html#Based-Variables">Based Variables</a>. +</p> +</dd> +<dt><code>c</code></dt> +<dd><p>Constant; see <a href="Constants.html#Constants">Constants</a>. +</p> +</dd> +<dt><code>C</code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>d</code></dt> +<dd><p>Floating point register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>. +</p> +</dd> +<dt><code>D</code></dt> +<dd><p>Parameter in floating point register; see <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>. +</p> +</dd> +<dt><code>f</code></dt> +<dd><p>File scope function; see <a href="Procedures.html#Procedures">Procedures</a>. +</p> +</dd> +<dt><code>F</code></dt> +<dd><p>Global function; see <a href="Procedures.html#Procedures">Procedures</a>. +</p> +</dd> +<dt><code>G</code></dt> +<dd><p>Global variable; see <a href="Global-Variables.html#Global-Variables">Global Variables</a>. +</p> +</dd> +<dt><code>i</code></dt> +<dd><p>See <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>. +</p> +</dd> +<dt><code>I</code></dt> +<dd><p>Internal (nested) procedure; see <a href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>. +</p> +</dd> +<dt><code>J</code></dt> +<dd><p>Internal (nested) function; see <a href="Nested-Procedures.html#Nested-Procedures">Nested Procedures</a>. +</p> +</dd> +<dt><code>L</code></dt> +<dd><p>Label name (documented by AIX, no further information known). +</p> +</dd> +<dt><code>m</code></dt> +<dd><p>Module; see <a href="Procedures.html#Procedures">Procedures</a>. +</p> +</dd> +<dt><code>p</code></dt> +<dd><p>Argument list parameter; see <a href="Parameters.html#Parameters">Parameters</a>. +</p> +</dd> +<dt><code>pP</code></dt> +<dd><p>See <a href="Parameters.html#Parameters">Parameters</a>. +</p> +</dd> +<dt><code>pF</code></dt> +<dd><p>Fortran Function parameter; see <a href="Parameters.html#Parameters">Parameters</a>. +</p> +</dd> +<dt><code>P</code></dt> +<dd><p>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>). +</p> +</dd> +<dt><code>Q</code></dt> +<dd><p>Static Procedure; see <a href="Procedures.html#Procedures">Procedures</a>. +</p> +</dd> +<dt><code>R</code></dt> +<dd><p>Register parameter; see <a href="Register-Parameters.html#Register-Parameters">Register Parameters</a>. +</p> +</dd> +<dt><code>r</code></dt> +<dd><p>Register variable; see <a href="Register-Variables.html#Register-Variables">Register Variables</a>. +</p> +</dd> +<dt><code>S</code></dt> +<dd><p>File scope variable; see <a href="Statics.html#Statics">Statics</a>. +</p> +</dd> +<dt><code>s</code></dt> +<dd><p>Local variable (OS9000). +</p> +</dd> +<dt><code>t</code></dt> +<dd><p>Type name; see <a href="Typedefs.html#Typedefs">Typedefs</a>. +</p> +</dd> +<dt><code>T</code></dt> +<dd><p>Enumeration, structure, or union tag; see <a href="Typedefs.html#Typedefs">Typedefs</a>. +</p> +</dd> +<dt><code>v</code></dt> +<dd><p>Parameter passed by reference; see <a href="Reference-Parameters.html#Reference-Parameters">Reference Parameters</a>. +</p> +</dd> +<dt><code>V</code></dt> +<dd><p>Procedure scope static variable; see <a href="Statics.html#Statics">Statics</a>. +</p> +</dd> +<dt><code>x</code></dt> +<dd><p>Conformant array; see <a href="Conformant-Arrays.html#Conformant-Arrays">Conformant Arrays</a>. +</p> +</dd> +<dt><code>X</code></dt> +<dd><p>Function return variable; see <a href="Parameters.html#Parameters">Parameters</a>. +</p></dd> +</dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Type-Descriptors.html#Type-Descriptors" accesskey="n" rel="next">Type Descriptors</a>, Previous: <a href="Stab-Types.html#Stab-Types" accesskey="p" rel="previous">Stab Types</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Symbol-Table-Format.html b/share/doc/stabs/Symbol-Table-Format.html new file mode 100644 index 0000000..1c321be --- /dev/null +++ b/share/doc/stabs/Symbol-Table-Format.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Symbol Table Format</title> + +<meta name="description" content="STABS: Symbol Table Format"> +<meta name="keywords" content="STABS: Symbol Table Format"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Symbol-Tables.html#Symbol-Tables" rel="up" title="Symbol Tables"> +<link href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" rel="next" title="Transformations On Symbol Tables"> +<link href="Symbol-Tables.html#Symbol-Tables" rel="previous" title="Symbol Tables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Symbol-Table-Format"></a> +<div class="header"> +<p> +Next: <a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" accesskey="n" rel="next">Transformations On Symbol Tables</a>, Up: <a href="Symbol-Tables.html#Symbol-Tables" accesskey="u" rel="up">Symbol Tables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Symbol-Table-Format-1"></a> +<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: +</p> +<div class="example"> +<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></div> + +<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> +<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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Symbol-Tables.html b/share/doc/stabs/Symbol-Tables.html new file mode 100644 index 0000000..1b63efa --- /dev/null +++ b/share/doc/stabs/Symbol-Tables.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Symbol Tables</title> + +<meta name="description" content="STABS: Symbol Tables"> +<meta name="keywords" content="STABS: Symbol Tables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Symbol-Table-Format.html#Symbol-Table-Format" rel="next" title="Symbol Table Format"> +<link href="Macro-define-and-undefine.html#Macro-define-and-undefine" rel="previous" title="Macro define and undefine"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Symbol-Tables"></a> +<div class="header"> +<p> +Next: <a href="Cplusplus.html#Cplusplus" accesskey="n" rel="next">Cplusplus</a>, Previous: <a href="Macro-define-and-undefine.html#Macro-define-and-undefine" accesskey="p" rel="previous">Macro define and undefine</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Symbol-Information-in-Symbol-Tables"></a> +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Symbol-Table-Format.html#Symbol-Table-Format" accesskey="1">Symbol Table Format</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" accesskey="2">Transformations On Symbol Tables</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Symbol-Types-Index.html b/share/doc/stabs/Symbol-Types-Index.html new file mode 100644 index 0000000..53b7a8f --- /dev/null +++ b/share/doc/stabs/Symbol-Types-Index.html @@ -0,0 +1,192 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Symbol Types Index</title> + +<meta name="description" content="STABS: Symbol Types Index"> +<meta name="keywords" content="STABS: Symbol Types Index"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" rel="previous" title="GNU Free Documentation License"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Symbol-Types-Index"></a> +<div class="header"> +<p> +Previous: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="p" rel="previous">GNU Free Documentation License</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Symbol-Types-Index-1"></a> +<h2 class="unnumbered">Symbol Types Index</h2> + +<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Symbol-Types-Index_fn_symbol-1"><b>.</b></a> + +<br> +<a class="summary-letter" href="#Symbol-Types-Index_fn_letter-C"><b>C</b></a> + +<a class="summary-letter" href="#Symbol-Types-Index_fn_letter-N"><b>N</b></a> + +</td></tr></table> +<table class="index-fn" border="0"> +<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Symbol-Types-Index_fn_symbol-1">.</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Block-Structure.html#index-_002ebb"><code>.bb</code></a>:</td><td> </td><td valign="top"><a href="Block-Structure.html#Block-Structure">Block Structure</a></td></tr> +<tr><td></td><td valign="top"><a href="Block-Structure.html#index-_002ebe"><code>.be</code></a>:</td><td> </td><td valign="top"><a href="Block-Structure.html#Block-Structure">Block Structure</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Symbol-Types-Index_fn_letter-C">C</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-C_005fBCOMM"><code>C_BCOMM</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-C_005fBINCL"><code>C_BINCL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Block-Structure.html#index-C_005fBLOCK"><code>C_BLOCK</code></a>:</td><td> </td><td valign="top"><a href="Block-Structure.html#Block-Structure">Block Structure</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-C_005fBSTAT"><code>C_BSTAT</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="Typedefs.html#index-C_005fDECL_002c-for-types"><code>C_DECL, for types</code></a>:</td><td> </td><td valign="top"><a href="Typedefs.html#Typedefs">Typedefs</a></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-C_005fECOML"><code>C_ECOML</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-C_005fECOMM"><code>C_ECOMM</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-C_005fEINCL"><code>C_EINCL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Alternate-Entry-Points.html#index-C_005fENTRY"><code>C_ENTRY</code></a>:</td><td> </td><td valign="top"><a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-C_005fESTAT"><code>C_ESTAT</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="Source-Files.html#index-C_005fFILE"><code>C_FILE</code></a>:</td><td> </td><td valign="top"><a href="Source-Files.html#Source-Files">Source Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Procedures.html#index-C_005fFUN"><code>C_FUN</code></a>:</td><td> </td><td valign="top"><a href="Procedures.html#Procedures">Procedures</a></td></tr> +<tr><td></td><td valign="top"><a href="Global-Variables.html#index-C_005fGSYM"><code>C_GSYM</code></a>:</td><td> </td><td valign="top"><a href="Global-Variables.html#Global-Variables">Global Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Stack-Variables.html#index-C_005fLSYM"><code>C_LSYM</code></a>:</td><td> </td><td valign="top"><a href="Stack-Variables.html#Stack-Variables">Stack Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Parameters.html#index-C_005fPSYM"><code>C_PSYM</code></a>:</td><td> </td><td valign="top"><a href="Parameters.html#Parameters">Parameters</a></td></tr> +<tr><td></td><td valign="top"><a href="Register-Parameters.html#index-C_005fRPSYM"><code>C_RPSYM</code></a>:</td><td> </td><td valign="top"><a href="Register-Parameters.html#Register-Parameters">Register Parameters</a></td></tr> +<tr><td></td><td valign="top"><a href="Register-Variables.html#index-C_005fRSYM"><code>C_RSYM</code></a>:</td><td> </td><td valign="top"><a href="Register-Variables.html#Register-Variables">Register Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-C_005fSTSYM"><code>C_STSYM</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Symbol-Types-Index_fn_letter-N">N</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-N_005fBCOMM"><code>N_BCOMM</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-N_005fBINCL"><code>N_BINCL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fBROWS.html#index-N_005fBROWS"><code>N_BROWS</code></a>:</td><td> </td><td valign="top"><a href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fBROWS.html#index-N_005fBROWS-1"><code>N_BROWS</code></a>:</td><td> </td><td valign="top"><a href="N_005fBROWS.html#N_005fBROWS">N_BROWS</a></td></tr> +<tr><td></td><td valign="top"><a href="Line-Numbers.html#index-N_005fBSLINE"><code>N_BSLINE</code></a>:</td><td> </td><td valign="top"><a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fCATCH.html#index-N_005fCATCH"><code>N_CATCH</code></a>:</td><td> </td><td valign="top"><a href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fCATCH.html#index-N_005fCATCH-1"><code>N_CATCH</code></a>:</td><td> </td><td valign="top"><a href="N_005fCATCH.html#N_005fCATCH">N_CATCH</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fDEFD.html#index-N_005fDEFD"><code>N_DEFD</code></a>:</td><td> </td><td valign="top"><a href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fDEFD.html#index-N_005fDEFD-1"><code>N_DEFD</code></a>:</td><td> </td><td valign="top"><a href="N_005fDEFD.html#N_005fDEFD">N_DEFD</a></td></tr> +<tr><td></td><td valign="top"><a href="Line-Numbers.html#index-N_005fDSLINE"><code>N_DSLINE</code></a>:</td><td> </td><td valign="top"><a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-N_005fECOML"><code>N_ECOML</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="Common-Blocks.html#index-N_005fECOMM"><code>N_ECOMM</code></a>:</td><td> </td><td valign="top"><a href="Common-Blocks.html#Common-Blocks">Common Blocks</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fEHDECL.html#index-N_005fEHDECL"><code>N_EHDECL</code></a>:</td><td> </td><td valign="top"><a href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fEHDECL.html#index-N_005fEHDECL-1"><code>N_EHDECL</code></a>:</td><td> </td><td valign="top"><a href="N_005fEHDECL.html#N_005fEHDECL">N_EHDECL</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-N_005fEINCL"><code>N_EINCL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Alternate-Entry-Points.html#index-N_005fENTRY"><code>N_ENTRY</code></a>:</td><td> </td><td valign="top"><a href="Alternate-Entry-Points.html#Alternate-Entry-Points">Alternate Entry Points</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-N_005fEXCL"><code>N_EXCL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Procedures.html#index-N_005fFNAME"><code>N_FNAME</code></a>:</td><td> </td><td valign="top"><a href="Procedures.html#Procedures">Procedures</a></td></tr> +<tr><td></td><td valign="top"><a href="Procedures.html#index-N_005fFUN_002c-for-functions"><code>N_FUN, for functions</code></a>:</td><td> </td><td valign="top"><a href="Procedures.html#Procedures">Procedures</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-N_005fFUN_002c-for-variables"><code>N_FUN, for variables</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="Global-Variables.html#index-N_005fGSYM"><code>N_GSYM</code></a>:</td><td> </td><td valign="top"><a href="Global-Variables.html#Global-Variables">Global Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Procedures.html#index-N_005fGSYM_002c-for-functions-_0028Sun-acc_0029"><code>N_GSYM, for functions (Sun acc)</code></a>:</td><td> </td><td valign="top"><a href="Procedures.html#Procedures">Procedures</a></td></tr> +<tr><td></td><td valign="top"><a href="Block-Structure.html#index-N_005fLBRAC"><code>N_LBRAC</code></a>:</td><td> </td><td valign="top"><a href="Block-Structure.html#Block-Structure">Block Structure</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-N_005fLCSYM"><code>N_LCSYM</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fLENG.html#index-N_005fLENG"><code>N_LENG</code></a>:</td><td> </td><td valign="top"><a href="N_005fLENG.html#N_005fLENG">N_LENG</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fLENG.html#index-N_005fLENG-1"><code>N_LENG</code></a>:</td><td> </td><td valign="top"><a href="N_005fLENG.html#N_005fLENG">N_LENG</a></td></tr> +<tr><td></td><td valign="top"><a href="Local-Variable-Parameters.html#index-N_005fLSYM_002c-for-parameter"><code>N_LSYM, for parameter</code></a>:</td><td> </td><td valign="top"><a href="Local-Variable-Parameters.html#Local-Variable-Parameters">Local Variable Parameters</a></td></tr> +<tr><td></td><td valign="top"><a href="Stack-Variables.html#index-N_005fLSYM_002c-for-stack-variables"><code>N_LSYM, for stack variables</code></a>:</td><td> </td><td valign="top"><a href="Stack-Variables.html#Stack-Variables">Stack Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Typedefs.html#index-N_005fLSYM_002c-for-types"><code>N_LSYM, for types</code></a>:</td><td> </td><td valign="top"><a href="Typedefs.html#Typedefs">Typedefs</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fM2C.html#index-N_005fM2C"><code>N_M2C</code></a>:</td><td> </td><td valign="top"><a href="N_005fM2C.html#N_005fM2C">N_M2C</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fM2C.html#index-N_005fM2C-1"><code>N_M2C</code></a>:</td><td> </td><td valign="top"><a href="N_005fM2C.html#N_005fM2C">N_M2C</a></td></tr> +<tr><td></td><td valign="top"><a href="Macro-define-and-undefine.html#index-N_005fMAC_005fDEFINE"><code>N_MAC_DEFINE</code></a>:</td><td> </td><td valign="top"><a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a></td></tr> +<tr><td></td><td valign="top"><a href="Macro-define-and-undefine.html#index-N_005fMAC_005fUNDEF"><code>N_MAC_UNDEF</code></a>:</td><td> </td><td valign="top"><a href="Macro-define-and-undefine.html#Macro-define-and-undefine">Macro define and undefine</a></td></tr> +<tr><td></td><td valign="top"><a href="Main-Program.html#index-N_005fMAIN"><code>N_MAIN</code></a>:</td><td> </td><td valign="top"><a href="Main-Program.html#Main-Program">Main Program</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fMOD2.html#index-N_005fMOD2"><code>N_MOD2</code></a>:</td><td> </td><td valign="top"><a href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fMOD2.html#index-N_005fMOD2-1"><code>N_MOD2</code></a>:</td><td> </td><td valign="top"><a href="N_005fMOD2.html#N_005fMOD2">N_MOD2</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBBSS"><code>N_NBBSS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBBSS-1"><code>N_NBBSS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBDATA"><code>N_NBDATA</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBDATA-1"><code>N_NBDATA</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBLCS"><code>N_NBLCS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBLCS-1"><code>N_NBLCS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBSTS"><code>N_NBSTS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBSTS-1"><code>N_NBSTS</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBTEXT"><code>N_NBTEXT</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="Gould.html#index-N_005fNBTEXT-1"><code>N_NBTEXT</code></a>:</td><td> </td><td valign="top"><a href="Gould.html#Gould">Gould</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fNOMAP.html#index-N_005fNOMAP"><code>N_NOMAP</code></a>:</td><td> </td><td valign="top"><a href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fNOMAP.html#index-N_005fNOMAP-1"><code>N_NOMAP</code></a>:</td><td> </td><td valign="top"><a href="N_005fNOMAP.html#N_005fNOMAP">N_NOMAP</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fNSYMS.html#index-N_005fNSYMS"><code>N_NSYMS</code></a>:</td><td> </td><td valign="top"><a href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fNSYMS.html#index-N_005fNSYMS-1"><code>N_NSYMS</code></a>:</td><td> </td><td valign="top"><a href="N_005fNSYMS.html#N_005fNSYMS">N_NSYMS</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fPC.html#index-N_005fPC"><code>N_PC</code></a>:</td><td> </td><td valign="top"><a href="N_005fPC.html#N_005fPC">N_PC</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fPC.html#index-N_005fPC-1"><code>N_PC</code></a>:</td><td> </td><td valign="top"><a href="N_005fPC.html#N_005fPC">N_PC</a></td></tr> +<tr><td></td><td valign="top"><a href="Parameters.html#index-N_005fPSYM"><code>N_PSYM</code></a>:</td><td> </td><td valign="top"><a href="Parameters.html#Parameters">Parameters</a></td></tr> +<tr><td></td><td valign="top"><a href="Block-Structure.html#index-N_005fRBRAC"><code>N_RBRAC</code></a>:</td><td> </td><td valign="top"><a href="Block-Structure.html#Block-Structure">Block Structure</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-N_005fROSYM"><code>N_ROSYM</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="Register-Variables.html#index-N_005fRSYM"><code>N_RSYM</code></a>:</td><td> </td><td valign="top"><a href="Register-Variables.html#Register-Variables">Register Variables</a></td></tr> +<tr><td></td><td valign="top"><a href="Register-Parameters.html#index-N_005fRSYM_002c-for-parameters"><code>N_RSYM, for parameters</code></a>:</td><td> </td><td valign="top"><a href="Register-Parameters.html#Register-Parameters">Register Parameters</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fSCOPE.html#index-N_005fSCOPE"><code>N_SCOPE</code></a>:</td><td> </td><td valign="top"><a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fSCOPE.html#index-N_005fSCOPE-1"><code>N_SCOPE</code></a>:</td><td> </td><td valign="top"><a href="N_005fSCOPE.html#N_005fSCOPE">N_SCOPE</a></td></tr> +<tr><td></td><td valign="top"><a href="Line-Numbers.html#index-N_005fSLINE"><code>N_SLINE</code></a>:</td><td> </td><td valign="top"><a href="Line-Numbers.html#Line-Numbers">Line Numbers</a></td></tr> +<tr><td></td><td valign="top"><a href="Source-Files.html#index-N_005fSO"><code>N_SO</code></a>:</td><td> </td><td valign="top"><a href="Source-Files.html#Source-Files">Source Files</a></td></tr> +<tr><td></td><td valign="top"><a href="Include-Files.html#index-N_005fSOL"><code>N_SOL</code></a>:</td><td> </td><td valign="top"><a href="Include-Files.html#Include-Files">Include Files</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fSSYM.html#index-N_005fSSYM"><code>N_SSYM</code></a>:</td><td> </td><td valign="top"><a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a></td></tr> +<tr><td></td><td valign="top"><a href="N_005fSSYM.html#index-N_005fSSYM-1"><code>N_SSYM</code></a>:</td><td> </td><td valign="top"><a href="N_005fSSYM.html#N_005fSSYM">N_SSYM</a></td></tr> +<tr><td></td><td valign="top"><a href="Statics.html#index-N_005fSTSYM"><code>N_STSYM</code></a>:</td><td> </td><td valign="top"><a href="Statics.html#Statics">Statics</a></td></tr> +<tr><td></td><td valign="top"><a href="Procedures.html#index-N_005fSTSYM_002c-for-functions-_0028Sun-acc_0029"><code>N_STSYM, for functions (Sun acc)</code></a>:</td><td> </td><td valign="top"><a href="Procedures.html#Procedures">Procedures</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Symbol-Types-Index_fn_symbol-1"><b>.</b></a> + +<br> +<a class="summary-letter" href="#Symbol-Types-Index_fn_letter-C"><b>C</b></a> + +<a class="summary-letter" href="#Symbol-Types-Index_fn_letter-N"><b>N</b></a> + +</td></tr></table> + +<hr> +<div class="header"> +<p> +Previous: <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="p" rel="previous">GNU Free Documentation License</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Traditional-Builtin-Types.html b/share/doc/stabs/Traditional-Builtin-Types.html new file mode 100644 index 0000000..64101c5 --- /dev/null +++ b/share/doc/stabs/Traditional-Builtin-Types.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Traditional Builtin Types</title> + +<meta name="description" content="STABS: Traditional Builtin Types"> +<meta name="keywords" content="STABS: Traditional Builtin Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Builtin-Types.html#Builtin-Types" rel="up" title="Builtin Types"> +<link href="Traditional-Integer-Types.html#Traditional-Integer-Types" rel="next" title="Traditional Integer Types"> +<link href="Builtin-Types.html#Builtin-Types" rel="previous" title="Builtin Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Traditional-Builtin-Types"></a> +<div class="header"> +<p> +Next: <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" accesskey="n" rel="next">Builtin Type Descriptors</a>, Up: <a href="Builtin-Types.html#Builtin-Types" accesskey="u" rel="up">Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Traditional-Builtin-Types-1"></a> +<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>. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Traditional-Integer-Types.html#Traditional-Integer-Types" accesskey="1">Traditional Integer Types</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Traditional-Other-Types.html#Traditional-Other-Types" accesskey="2">Traditional Other Types</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Traditional-Integer-Types.html b/share/doc/stabs/Traditional-Integer-Types.html new file mode 100644 index 0000000..fb418b2 --- /dev/null +++ b/share/doc/stabs/Traditional-Integer-Types.html @@ -0,0 +1,131 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Traditional Integer Types</title> + +<meta name="description" content="STABS: Traditional Integer Types"> +<meta name="keywords" content="STABS: Traditional Integer Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" rel="up" title="Traditional Builtin Types"> +<link href="Traditional-Other-Types.html#Traditional-Other-Types" rel="next" title="Traditional Other Types"> +<link href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" rel="previous" title="Traditional Builtin Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Traditional-Integer-Types"></a> +<div class="header"> +<p> +Next: <a href="Traditional-Other-Types.html#Traditional-Other-Types" accesskey="n" rel="next">Traditional Other Types</a>, Up: <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="u" rel="up">Traditional Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Traditional-Integer-Types-1"></a> +<h4 class="subsubsection">5.1.1.1 Traditional Integer Types</h4> + +<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: +</p> +<div class="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></div> + +<p>Builtin types can also be described as subranges of <code>int</code>: +</p> +<div class="example"> +<pre class="example">.stabs "unsigned short:t6=r1;0;65535;",128,0,0,0 +</pre></div> + +<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>: +</p> +<div class="example"> +<pre class="example">.stabs "unsigned int:t4=r1;0;-1;",128,0,0,0 +</pre></div> + +<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: +</p> +<div class="example"> +<pre class="example">long int:t3=r1;001000000000000000000000;000777777777777777777777; +long unsigned int:t5=r1;000000000000000000000000;001777777777777777777777; +</pre></div> + +<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> +<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. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Traditional-Other-Types.html#Traditional-Other-Types" accesskey="n" rel="next">Traditional Other Types</a>, Up: <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="u" rel="up">Traditional Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Traditional-Other-Types.html b/share/doc/stabs/Traditional-Other-Types.html new file mode 100644 index 0000000..c12e850 --- /dev/null +++ b/share/doc/stabs/Traditional-Other-Types.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Traditional Other Types</title> + +<meta name="description" content="STABS: Traditional Other Types"> +<meta name="keywords" content="STABS: Traditional Other Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" rel="up" title="Traditional Builtin Types"> +<link href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors" rel="next" title="Builtin Type Descriptors"> +<link href="Traditional-Integer-Types.html#Traditional-Integer-Types" rel="previous" title="Traditional Integer Types"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Traditional-Other-Types"></a> +<div class="header"> +<p> +Previous: <a href="Traditional-Integer-Types.html#Traditional-Integer-Types" accesskey="p" rel="previous">Traditional Integer Types</a>, Up: <a href="Traditional-Builtin-Types.html#Traditional-Builtin-Types" accesskey="u" rel="up">Traditional Builtin Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Traditional-Other-Types-1"></a> +<h4 class="subsubsection">5.1.1.2 Traditional Other Types</h4> + +<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: +</p> +<div class="example"> +<pre class="example">.stabs "float:t12=r1;4;0;",128,0,0,0 +.stabs "double:t13=r1;8;0;",128,0,0,0 +</pre></div> + +<p>However, GCC writes <code>long double</code> the same way it writes +<code>double</code>, so there is no way to distinguish. +</p> +<div class="example"> +<pre class="example">.stabs "long double:t14=r1;8;0;",128,0,0,0 +</pre></div> + +<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> +<p>The C <code>void</code> type is defined as itself: +</p> +<div class="example"> +<pre class="example">.stabs "void:t15=15",128,0,0,0 +</pre></div> + +<p>I’m not sure how a boolean type is represented. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Transformations-On-Global-Variables.html b/share/doc/stabs/Transformations-On-Global-Variables.html new file mode 100644 index 0000000..5856763 --- /dev/null +++ b/share/doc/stabs/Transformations-On-Global-Variables.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Transformations On Global Variables</title> + +<meta name="description" content="STABS: Transformations On Global Variables"> +<meta name="keywords" content="STABS: Transformations On Global Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" rel="up" title="Transformations On Symbol Tables"> +<link href="Stab-Section-Transformations.html#Stab-Section-Transformations" rel="next" title="Stab Section Transformations"> +<link href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables" rel="previous" title="Transformations On Static Variables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Transformations-On-Global-Variables"></a> +<div class="header"> +<p> +Next: <a href="Stab-Section-Transformations.html#Stab-Section-Transformations" accesskey="n" rel="next">Stab Section Transformations</a>, Previous: <a href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables" accesskey="p" rel="previous">Transformations On Static Variables</a>, Up: <a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" accesskey="u" rel="up">Transformations On Symbol Tables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Transformations-on-Global-Variables"></a> +<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: +</p> +<div class="example"> +<pre class="example">char g_foo = 'c'; +</pre></div> + +<p>generates the stab: +</p> +<div class="example"> +<pre class="example">.stabs "g_foo:G2",32,0,0,0 +</pre></div> + +<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>D</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. +</p> +<div class="example"> +<pre class="example">00000000 - 00 0000 GSYM g_foo:G2 +00000080 D _g_foo +</pre></div> + +<p>These entries as transformed by the linker. The linker symbol table +entry now holds an absolute address: +</p> +<div class="example"> +<pre class="example">00000000 - 00 0000 GSYM g_foo:G2 +… +0000e008 D _g_foo +</pre></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Transformations-On-Static-Variables.html b/share/doc/stabs/Transformations-On-Static-Variables.html new file mode 100644 index 0000000..ecfbea1 --- /dev/null +++ b/share/doc/stabs/Transformations-On-Static-Variables.html @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Transformations On Static Variables</title> + +<meta name="description" content="STABS: Transformations On Static Variables"> +<meta name="keywords" content="STABS: Transformations On Static Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" rel="up" title="Transformations On Symbol Tables"> +<link href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" rel="next" title="Transformations On Global Variables"> +<link href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" rel="previous" title="Transformations On Symbol Tables"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Transformations-On-Static-Variables"></a> +<div class="header"> +<p> +Next: <a href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" accesskey="n" rel="next">Transformations On Global Variables</a>, Up: <a href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables" accesskey="u" rel="up">Transformations On Symbol Tables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Transformations-on-Static-Variables"></a> +<h4 class="subsection">7.2.1 Transformations on Static Variables</h4> + +<p>This source line defines a static variable at file scope: +</p> +<div class="example"> +<pre class="example">static int s_g_repeat +</pre></div> + +<p>The following stab describes the symbol: +</p> +<div class="example"> +<pre class="example">.stabs "s_g_repeat:S1",38,0,0,_s_g_repeat +</pre></div> + +<p>The assembler transforms the stab into this symbol table entry in the +<samp>.o</samp> file. The location is expressed as a data segment offset. +</p> +<div class="example"> +<pre class="example">00000084 - 00 0000 STSYM s_g_repeat:S1 +</pre></div> + +<p>In the symbol table entry from the executable, the linker has made the +relocatable address absolute. +</p> +<div class="example"> +<pre class="example">0000e00c - 00 0000 STSYM s_g_repeat:S1 +</pre></div> + + + + +</body> +</html> diff --git a/share/doc/stabs/Transformations-On-Symbol-Tables.html b/share/doc/stabs/Transformations-On-Symbol-Tables.html new file mode 100644 index 0000000..202a64c --- /dev/null +++ b/share/doc/stabs/Transformations-On-Symbol-Tables.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Transformations On Symbol Tables</title> + +<meta name="description" content="STABS: Transformations On Symbol Tables"> +<meta name="keywords" content="STABS: Transformations On Symbol Tables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Symbol-Tables.html#Symbol-Tables" rel="up" title="Symbol Tables"> +<link href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables" rel="next" title="Transformations On Static Variables"> +<link href="Symbol-Table-Format.html#Symbol-Table-Format" rel="previous" title="Symbol Table Format"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Transformations-On-Symbol-Tables"></a> +<div class="header"> +<p> +Previous: <a href="Symbol-Table-Format.html#Symbol-Table-Format" accesskey="p" rel="previous">Symbol Table Format</a>, Up: <a href="Symbol-Tables.html#Symbol-Tables" accesskey="u" rel="up">Symbol Tables</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Transformations-on-Symbol-Tables"></a> +<h3 class="section">7.2 Transformations on Symbol Tables</h3> + +<p>The linker concatenates object files and does fixups of externally +defined symbols. +</p> +<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>nm -ap</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> +<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> +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables" accesskey="1">Transformations On Static Variables</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables" accesskey="2">Transformations On Global Variables</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Stab-Section-Transformations.html#Stab-Section-Transformations" accesskey="3">Stab Section Transformations</a>:</td><td> </td><td align="left" valign="top">For some object file formats, + things are a bit different. +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Type-Descriptors.html b/share/doc/stabs/Type-Descriptors.html new file mode 100644 index 0000000..c68e761 --- /dev/null +++ b/share/doc/stabs/Type-Descriptors.html @@ -0,0 +1,253 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Type Descriptors</title> + +<meta name="description" content="STABS: Type Descriptors"> +<meta name="keywords" content="STABS: Type Descriptors"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Expanded-Reference.html#Expanded-Reference" rel="next" title="Expanded Reference"> +<link href="Symbol-Descriptors.html#Symbol-Descriptors" rel="previous" title="Symbol Descriptors"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Type-Descriptors"></a> +<div class="header"> +<p> +Next: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="n" rel="next">Expanded Reference</a>, Previous: <a href="Symbol-Descriptors.html#Symbol-Descriptors" accesskey="p" rel="previous">Symbol Descriptors</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Table-of-Type-Descriptors"></a> +<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. +</p> +<dl compact="compact"> +<dt><code><var>digit</var></code></dt> +<dt><code>(</code></dt> +<dd><p>Type reference; see <a href="String-Field.html#String-Field">String Field</a>. +</p> +</dd> +<dt><code>-</code></dt> +<dd><p>Reference to builtin type; see <a href="Negative-Type-Numbers.html#Negative-Type-Numbers">Negative Type Numbers</a>. +</p> +</dd> +<dt><code>#</code></dt> +<dd><p>Method (C<tt>++</tt>); see <a href="Method-Type-Descriptor.html#Method-Type-Descriptor">Method Type Descriptor</a>. +</p> +</dd> +<dt><code>*</code></dt> +<dd><p>Pointer; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>&</code></dt> +<dd><p>Reference (C<tt>++</tt>). +</p> +</dd> +<dt><code>@</code></dt> +<dd><p>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>. +</p> +</dd> +<dt><code>a</code></dt> +<dd><p>Array; see <a href="Arrays.html#Arrays">Arrays</a>. +</p> +</dd> +<dt><code>A</code></dt> +<dd><p>Open array; see <a href="Arrays.html#Arrays">Arrays</a>. +</p> +</dd> +<dt><code>b</code></dt> +<dd><p>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). +</p> +</dd> +<dt><code>B</code></dt> +<dd><p>Volatile-qualified type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>c</code></dt> +<dd><p>Complex builtin type (AIX); see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>. +Const-qualified type (OS9000). +</p> +</dd> +<dt><code>C</code></dt> +<dd><p>COBOL Picture type. See AIX documentation for details. +</p> +</dd> +<dt><code>d</code></dt> +<dd><p>File type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>D</code></dt> +<dd><p>N-dimensional dynamic array; see <a href="Arrays.html#Arrays">Arrays</a>. +</p> +</dd> +<dt><code>e</code></dt> +<dd><p>Enumeration type; see <a href="Enumerations.html#Enumerations">Enumerations</a>. +</p> +</dd> +<dt><code>E</code></dt> +<dd><p>N-dimensional subarray; see <a href="Arrays.html#Arrays">Arrays</a>. +</p> +</dd> +<dt><code>f</code></dt> +<dd><p>Function type; see <a href="Function-Types.html#Function-Types">Function Types</a>. +</p> +</dd> +<dt><code>F</code></dt> +<dd><p>Pascal function parameter; see <a href="Function-Types.html#Function-Types">Function Types</a> +</p> +</dd> +<dt><code>g</code></dt> +<dd><p>Builtin floating point type; see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>. +</p> +</dd> +<dt><code>G</code></dt> +<dd><p>COBOL Group. See AIX documentation for details. +</p> +</dd> +<dt><code>i</code></dt> +<dd><p>Imported type (AIX); see <a href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>. Volatile-qualified +type (OS9000). +</p> +</dd> +<dt><code>k</code></dt> +<dd><p>Const-qualified type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>K</code></dt> +<dd><p>COBOL File Descriptor. See AIX documentation for details. +</p> +</dd> +<dt><code>M</code></dt> +<dd><p>Multiple instance type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>n</code></dt> +<dd><p>String type; see <a href="Strings.html#Strings">Strings</a>. +</p> +</dd> +<dt><code>N</code></dt> +<dd><p>Stringptr; see <a href="Strings.html#Strings">Strings</a>. +</p> +</dd> +<dt><code>o</code></dt> +<dd><p>Opaque type; see <a href="Typedefs.html#Typedefs">Typedefs</a>. +</p> +</dd> +<dt><code>p</code></dt> +<dd><p>Procedure; see <a href="Function-Types.html#Function-Types">Function Types</a>. +</p> +</dd> +<dt><code>P</code></dt> +<dd><p>Packed array; see <a href="Arrays.html#Arrays">Arrays</a>. +</p> +</dd> +<dt><code>r</code></dt> +<dd><p>Range type; see <a href="Subranges.html#Subranges">Subranges</a>. +</p> +</dd> +<dt><code>R</code></dt> +<dd><p>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). +</p> +</dd> +<dt><code>s</code></dt> +<dd><p>Structure type; see <a href="Structures.html#Structures">Structures</a>. +</p> +</dd> +<dt><code>S</code></dt> +<dd><p>Set type; see <a href="Miscellaneous-Types.html#Miscellaneous-Types">Miscellaneous Types</a>. +</p> +</dd> +<dt><code>u</code></dt> +<dd><p>Union; see <a href="Unions.html#Unions">Unions</a>. +</p> +</dd> +<dt><code>v</code></dt> +<dd><p>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. +</p> +</dd> +<dt><code>w</code></dt> +<dd><p>Wide character; see <a href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">Builtin Type Descriptors</a>. +</p> +</dd> +<dt><code>x</code></dt> +<dd><p>Cross-reference; see <a href="Cross_002dReferences.html#Cross_002dReferences">Cross-References</a>. +</p> +</dd> +<dt><code>Y</code></dt> +<dd><p>Used by IBM’s xlC C<tt>++</tt> compiler (for structures, I think). +</p> +</dd> +<dt><code>z</code></dt> +<dd><p>gstring; see <a href="Strings.html#Strings">Strings</a>. +</p></dd> +</dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Expanded-Reference.html#Expanded-Reference" accesskey="n" rel="next">Expanded Reference</a>, Previous: <a href="Symbol-Descriptors.html#Symbol-Descriptors" accesskey="p" rel="previous">Symbol Descriptors</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Typedefs.html b/share/doc/stabs/Typedefs.html new file mode 100644 index 0000000..273d202 --- /dev/null +++ b/share/doc/stabs/Typedefs.html @@ -0,0 +1,104 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Typedefs</title> + +<meta name="description" content="STABS: Typedefs"> +<meta name="keywords" content="STABS: Typedefs"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Unions.html#Unions" rel="next" title="Unions"> +<link href="Structures.html#Structures" rel="previous" title="Structures"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Typedefs"></a> +<div class="header"> +<p> +Next: <a href="Unions.html#Unions" accesskey="n" rel="next">Unions</a>, Previous: <a href="Structures.html#Structures" accesskey="p" rel="previous">Structures</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Giving-a-Type-a-Name"></a> +<h3 class="section">5.9 Giving a Type a Name</h3> + +<a name="index-N_005fLSYM_002c-for-types"></a> +<a name="index-C_005fDECL_002c-for-types"></a> +<p>To give a type a name, use the ‘<samp>t</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, +</p> +<div class="example"> +<pre class="example">.stabs "s_typedef:t16",128,0,0,0 # <span class="roman">128 is N_LSYM</span> +</pre></div> + +<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> +<p>If you are specifying the tag name for a structure, union, or +enumeration, use the ‘<samp>T</samp>’ symbol descriptor instead. I believe C is +the only language with this feature. +</p> +<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>o</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. +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Types.html b/share/doc/stabs/Types.html new file mode 100644 index 0000000..bcd8bff --- /dev/null +++ b/share/doc/stabs/Types.html @@ -0,0 +1,105 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Types</title> + +<meta name="description" content="STABS: Types"> +<meta name="keywords" content="STABS: Types"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Builtin-Types.html#Builtin-Types" rel="next" title="Builtin Types"> +<link href="Conformant-Arrays.html#Conformant-Arrays" rel="previous" title="Conformant Arrays"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Types"></a> +<div class="header"> +<p> +Next: <a href="Macro-define-and-undefine.html#Macro-define-and-undefine" accesskey="n" rel="next">Macro define and undefine</a>, Previous: <a href="Variables.html#Variables" accesskey="p" rel="previous">Variables</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Defining-Types"></a> +<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>=</samp>’ in a type definition. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Builtin-Types.html#Builtin-Types" accesskey="1">Builtin Types</a>:</td><td> </td><td align="left" valign="top">Integers, floating point, void, etc. +</td></tr> +<tr><td align="left" valign="top">• <a href="Miscellaneous-Types.html#Miscellaneous-Types" accesskey="2">Miscellaneous Types</a>:</td><td> </td><td align="left" valign="top">Pointers, sets, files, etc. +</td></tr> +<tr><td align="left" valign="top">• <a href="Cross_002dReferences.html#Cross_002dReferences" accesskey="3">Cross-References</a>:</td><td> </td><td align="left" valign="top">Referring to a type not yet defined. +</td></tr> +<tr><td align="left" valign="top">• <a href="Subranges.html#Subranges" accesskey="4">Subranges</a>:</td><td> </td><td align="left" valign="top">A type with a specific range. +</td></tr> +<tr><td align="left" valign="top">• <a href="Arrays.html#Arrays" accesskey="5">Arrays</a>:</td><td> </td><td align="left" valign="top">An aggregate type of same-typed elements. +</td></tr> +<tr><td align="left" valign="top">• <a href="Strings.html#Strings" accesskey="6">Strings</a>:</td><td> </td><td align="left" valign="top">Like an array but also has a length. +</td></tr> +<tr><td align="left" valign="top">• <a href="Enumerations.html#Enumerations" accesskey="7">Enumerations</a>:</td><td> </td><td align="left" valign="top">Like an integer but the values have names. +</td></tr> +<tr><td align="left" valign="top">• <a href="Structures.html#Structures" accesskey="8">Structures</a>:</td><td> </td><td align="left" valign="top">An aggregate type of different-typed elements. +</td></tr> +<tr><td align="left" valign="top">• <a href="Typedefs.html#Typedefs" accesskey="9">Typedefs</a>:</td><td> </td><td align="left" valign="top">Giving a type a name. +</td></tr> +<tr><td align="left" valign="top">• <a href="Unions.html#Unions">Unions</a>:</td><td> </td><td align="left" valign="top">Different types sharing storage. +</td></tr> +<tr><td align="left" valign="top">• <a href="Function-Types.html#Function-Types">Function Types</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Unions.html b/share/doc/stabs/Unions.html new file mode 100644 index 0000000..cf4563d --- /dev/null +++ b/share/doc/stabs/Unions.html @@ -0,0 +1,118 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Unions</title> + +<meta name="description" content="STABS: Unions"> +<meta name="keywords" content="STABS: Unions"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Types.html#Types" rel="up" title="Types"> +<link href="Function-Types.html#Function-Types" rel="next" title="Function Types"> +<link href="Typedefs.html#Typedefs" rel="previous" title="Typedefs"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Unions"></a> +<div class="header"> +<p> +Next: <a href="Function-Types.html#Function-Types" accesskey="n" rel="next">Function Types</a>, Previous: <a href="Typedefs.html#Typedefs" accesskey="p" rel="previous">Typedefs</a>, Up: <a href="Types.html#Types" accesskey="u" rel="up">Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Unions-1"></a> +<h3 class="section">5.10 Unions</h3> + +<div class="example"> +<pre class="example">union u_tag { + int u_int; + float u_float; + char* u_char; +} an_u; +</pre></div> + +<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> +<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. +</p> +<div class="smallexample"> +<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></div> + +<p>The symbol descriptor ‘<samp>T</samp>’, following the ‘<samp>name:</samp>’ means that +the stab describes an enumeration, structure, or union tag. The type +descriptor ‘<samp>u</samp>’, following the ‘<samp>23=</samp>’ of the type definition, +narrows it down to a union type definition. Following the ‘<samp>u</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>:<var>type</var>, <var>bit +offset into the union</var>, <var>number of bytes for the element</var>;</samp>’. +</p> +<p>The stab for the union variable is: +</p> +<div class="example"> +<pre class="example">.stabs "an_u:23",128,0,0,-20 # <span class="roman">128 is N_LSYM</span> +</pre></div> + +<p>‘<samp>-20</samp>’ specifies where the variable is stored (see <a href="Stack-Variables.html#Stack-Variables">Stack Variables</a>). +</p> + + + +</body> +</html> diff --git a/share/doc/stabs/Variables.html b/share/doc/stabs/Variables.html new file mode 100644 index 0000000..1771bf1 --- /dev/null +++ b/share/doc/stabs/Variables.html @@ -0,0 +1,96 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Variables</title> + +<meta name="description" content="STABS: Variables"> +<meta name="keywords" content="STABS: Variables"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html#Top" rel="up" title="Top"> +<link href="Stack-Variables.html#Stack-Variables" rel="next" title="Stack Variables"> +<link href="Constants.html#Constants" rel="previous" title="Constants"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Variables"></a> +<div class="header"> +<p> +Next: <a href="Types.html#Types" accesskey="n" rel="next">Types</a>, Previous: <a href="Constants.html#Constants" accesskey="p" rel="previous">Constants</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Variables-1"></a> +<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. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Stack-Variables.html#Stack-Variables" accesskey="1">Stack Variables</a>:</td><td> </td><td align="left" valign="top">Variables allocated on the stack. +</td></tr> +<tr><td align="left" valign="top">• <a href="Global-Variables.html#Global-Variables" accesskey="2">Global Variables</a>:</td><td> </td><td align="left" valign="top">Variables used by more than one source file. +</td></tr> +<tr><td align="left" valign="top">• <a href="Register-Variables.html#Register-Variables" accesskey="3">Register Variables</a>:</td><td> </td><td align="left" valign="top">Variables in registers. +</td></tr> +<tr><td align="left" valign="top">• <a href="Common-Blocks.html#Common-Blocks" accesskey="4">Common Blocks</a>:</td><td> </td><td align="left" valign="top">Variables statically allocated together. +</td></tr> +<tr><td align="left" valign="top">• <a href="Statics.html#Statics" accesskey="5">Statics</a>:</td><td> </td><td align="left" valign="top">Variables local to one source file. +</td></tr> +<tr><td align="left" valign="top">• <a href="Based-Variables.html#Based-Variables" accesskey="6">Based Variables</a>:</td><td> </td><td align="left" valign="top">Fortran pointer based variables. +</td></tr> +<tr><td align="left" valign="top">• <a href="Parameters.html#Parameters" accesskey="7">Parameters</a>:</td><td> </td><td align="left" valign="top">Variables for arguments to functions. +</td></tr> +</table> + + + + +</body> +</html> diff --git a/share/doc/stabs/Virtual-Base-Classes.html b/share/doc/stabs/Virtual-Base-Classes.html new file mode 100644 index 0000000..5244ad4 --- /dev/null +++ b/share/doc/stabs/Virtual-Base-Classes.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Virtual Base Classes</title> + +<meta name="description" content="STABS: Virtual Base Classes"> +<meta name="keywords" content="STABS: Virtual Base Classes"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Static-Members.html#Static-Members" rel="next" title="Static Members"> +<link href="Inheritance.html#Inheritance" rel="previous" title="Inheritance"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Virtual-Base-Classes"></a> +<div class="header"> +<p> +Next: <a href="Static-Members.html#Static-Members" accesskey="n" rel="next">Static Members</a>, Previous: <a href="Inheritance.html#Inheritance" accesskey="p" rel="previous">Inheritance</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Virtual-Base-Classes-1"></a> +<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> +<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> +<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>$vb</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>$vb25</samp>’. +</p> +<div class="smallexample"> +<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></div> + +<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. +</p> +<div class="example"> +<pre class="example">.stabs "this:P24=*25=xsB:",64,0,0,8 +</pre></div> + +<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. +</p> + +<hr> +<div class="header"> +<p> +Next: <a href="Static-Members.html#Static-Members" accesskey="n" rel="next">Static Members</a>, Previous: <a href="Inheritance.html#Inheritance" accesskey="p" rel="previous">Inheritance</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/Virtual-Methods.html b/share/doc/stabs/Virtual-Methods.html new file mode 100644 index 0000000..ea4b3ea --- /dev/null +++ b/share/doc/stabs/Virtual-Methods.html @@ -0,0 +1,163 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Virtual Methods</title> + +<meta name="description" content="STABS: Virtual Methods"> +<meta name="keywords" content="STABS: Virtual Methods"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus"> +<link href="Inheritance.html#Inheritance" rel="next" title="Inheritance"> +<link href="Method-Modifiers.html#Method-Modifiers" rel="previous" title="Method Modifiers"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Virtual-Methods"></a> +<div class="header"> +<p> +Next: <a href="Inheritance.html#Inheritance" accesskey="n" rel="next">Inheritance</a>, Previous: <a href="Method-Modifiers.html#Method-Modifiers" accesskey="p" rel="previous">Method Modifiers</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Virtual-Methods-1"></a> +<h3 class="section">8.11 Virtual Methods</h3> + +<p><< The following examples are based on a4.C >> +</p> +<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: +</p> +<div class="example"> +<pre class="example">class A { +public: + int Adat; + virtual int A_virt (int arg) { return arg; }; +}; +</pre></div> + +<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>Adat</samp>’, an integer, starting at structure offset 0 and +occupying 32 bits. +</p> +<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>$vf</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>$vf20</samp>’, followed by the usual colon. +</p> +<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> +<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> +<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> +<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>A</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> +<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> +<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> +<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> +<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>~%</samp>’ and followed by a final semi-colon. +</p> +<div class="display"> +<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></div> + +<div class="example"> +<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></div> + +<hr> +<div class="header"> +<p> +Next: <a href="Inheritance.html#Inheritance" accesskey="n" rel="next">Inheritance</a>, Previous: <a href="Method-Modifiers.html#Method-Modifiers" accesskey="p" rel="previous">Method Modifiers</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/share/doc/stabs/index.html b/share/doc/stabs/index.html new file mode 100644 index 0000000..083df09 --- /dev/null +++ b/share/doc/stabs/index.html @@ -0,0 +1,266 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1992-2023 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". --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>STABS: Top</title> + +<meta name="description" content="STABS: Top"> +<meta name="keywords" content="STABS: Top"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="#Top" rel="start" title="Top"> +<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> +<link href="#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="../dir/index.html" rel="up" title="(dir)"> +<link href="Overview.html#Overview" rel="next" title="Overview"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<h1 class="settitle" align="center">STABS</h1> + + + + + +<p>This document describes the stabs debugging symbol tables. +</p> +<p>Copyright © 1992–2023 Free Software Foundation, Inc. +Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon, +and David MacKenzie. +</p> +<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”. +</p> + + +<a name="Top"></a> +<div class="header"> +<p> +Next: <a href="Overview.html#Overview" accesskey="n" rel="next">Overview</a>, Up: <a href="../dir/index.html" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="The-_0022stabs_0022-representation-of-debugging-information"></a> +<h1 class="top">The "stabs" representation of debugging information</h1> + +<p>This document describes the stabs debugging format. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="Overview.html#Overview" accesskey="1">Overview</a>:</td><td> </td><td align="left" valign="top">Overview of stabs +</td></tr> +<tr><td align="left" valign="top">• <a href="Program-Structure.html#Program-Structure" accesskey="2">Program Structure</a>:</td><td> </td><td align="left" valign="top">Encoding of the structure of the program +</td></tr> +<tr><td align="left" valign="top">• <a href="Constants.html#Constants" accesskey="3">Constants</a>:</td><td> </td><td align="left" valign="top">Constants +</td></tr> +<tr><td align="left" valign="top">• <a href="Variables.html#Variables" accesskey="4">Variables</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="Types.html#Types" accesskey="5">Types</a>:</td><td> </td><td align="left" valign="top">Type definitions +</td></tr> +<tr><td align="left" valign="top">• <a href="Macro-define-and-undefine.html#Macro-define-and-undefine" accesskey="6">Macro define and undefine</a>:</td><td> </td><td align="left" valign="top">Representation of #define and #undef +</td></tr> +<tr><td align="left" valign="top">• <a href="Symbol-Tables.html#Symbol-Tables" accesskey="7">Symbol Tables</a>:</td><td> </td><td align="left" valign="top">Symbol information in symbol tables +</td></tr> +<tr><td align="left" valign="top">• <a href="Cplusplus.html#Cplusplus" accesskey="8">Cplusplus</a>:</td><td> </td><td align="left" valign="top">Stabs specific to C++ +</td></tr> +<tr><td align="left" valign="top">• <a href="Stab-Types.html#Stab-Types" accesskey="9">Stab Types</a>:</td><td> </td><td align="left" valign="top">Symbol types in a.out files +</td></tr> +<tr><td align="left" valign="top">• <a href="Symbol-Descriptors.html#Symbol-Descriptors">Symbol Descriptors</a>:</td><td> </td><td align="left" valign="top">Table of symbol descriptors +</td></tr> +<tr><td align="left" valign="top">• <a href="Type-Descriptors.html#Type-Descriptors">Type Descriptors</a>:</td><td> </td><td align="left" valign="top">Table of type descriptors +</td></tr> +<tr><td align="left" valign="top">• <a href="Expanded-Reference.html#Expanded-Reference">Expanded Reference</a>:</td><td> </td><td align="left" valign="top">Reference information by stab type +</td></tr> +<tr><td align="left" valign="top">• <a href="Questions.html#Questions">Questions</a>:</td><td> </td><td align="left" valign="top">Questions and anomalies +</td></tr> +<tr><td align="left" valign="top">• <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>:</td><td> </td><td align="left" valign="top">In some object file formats, stabs are + in sections. +</td></tr> +<tr><td align="left" valign="top">• <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>:</td><td> </td><td align="left" valign="top">The license for this documentation +</td></tr> +<tr><td align="left" valign="top">• <a href="Symbol-Types-Index.html#Symbol-Types-Index">Symbol Types Index</a>:</td><td> </td><td align="left" valign="top">Index of symbolic stab symbol type names. +</td></tr> +</table> + +<a name="SEC_Contents"></a> +<h2 class="contents-heading">Table of Contents</h2> + +<div class="contents"> + +<ul class="no-bullet"> + <li><a name="toc-Overview-of-Stabs" href="Overview.html#Overview">1 Overview of Stabs</a> + <ul class="no-bullet"> + <li><a name="toc-Overview-of-Debugging-Information-Flow" href="Flow.html#Flow">1.1 Overview of Debugging Information Flow</a></li> + <li><a name="toc-Overview-of-Stab-Format" href="Stabs-Format.html#Stabs-Format">1.2 Overview of Stab Format</a></li> + <li><a name="toc-The-String-Field" href="String-Field.html#String-Field">1.3 The String Field</a></li> + <li><a name="toc-A-Simple-Example-in-C-Source" href="C-Example.html#C-Example">1.4 A Simple Example in C Source</a></li> + <li><a name="toc-The-Simple-Example-at-the-Assembly-Level" href="Assembly-Code.html#Assembly-Code">1.5 The Simple Example at the Assembly Level</a></li> + </ul></li> + <li><a name="toc-Encoding-the-Structure-of-the-Program" href="Program-Structure.html#Program-Structure">2 Encoding the Structure of the Program</a> + <ul class="no-bullet"> + <li><a name="toc-Main-Program-1" href="Main-Program.html#Main-Program">2.1 Main Program</a></li> + <li><a name="toc-Paths-and-Names-of-the-Source-Files" href="Source-Files.html#Source-Files">2.2 Paths and Names of the Source Files</a></li> + <li><a name="toc-Names-of-Include-Files" href="Include-Files.html#Include-Files">2.3 Names of Include Files</a></li> + <li><a name="toc-Line-Numbers-1" href="Line-Numbers.html#Line-Numbers">2.4 Line Numbers</a></li> + <li><a name="toc-Procedures-1" href="Procedures.html#Procedures">2.5 Procedures</a></li> + <li><a name="toc-Nested-Procedures-1" href="Nested-Procedures.html#Nested-Procedures">2.6 Nested Procedures</a></li> + <li><a name="toc-Block-Structure-1" href="Block-Structure.html#Block-Structure">2.7 Block Structure</a></li> + <li><a name="toc-Alternate-Entry-Points-1" href="Alternate-Entry-Points.html#Alternate-Entry-Points">2.8 Alternate Entry Points</a></li> + </ul></li> + <li><a name="toc-Constants-1" href="Constants.html#Constants">3 Constants</a></li> + <li><a name="toc-Variables-1" href="Variables.html#Variables">4 Variables</a> + <ul class="no-bullet"> + <li><a name="toc-Automatic-Variables-Allocated-on-the-Stack" href="Stack-Variables.html#Stack-Variables">4.1 Automatic Variables Allocated on the Stack</a></li> + <li><a name="toc-Global-Variables-1" href="Global-Variables.html#Global-Variables">4.2 Global Variables</a></li> + <li><a name="toc-Register-Variables-1" href="Register-Variables.html#Register-Variables">4.3 Register Variables</a></li> + <li><a name="toc-Common-Blocks-1" href="Common-Blocks.html#Common-Blocks">4.4 Common Blocks</a></li> + <li><a name="toc-Static-Variables" href="Statics.html#Statics">4.5 Static Variables</a></li> + <li><a name="toc-Fortran-Based-Variables" href="Based-Variables.html#Based-Variables">4.6 Fortran Based Variables</a></li> + <li><a name="toc-Parameters-1" href="Parameters.html#Parameters">4.7 Parameters</a> + <ul class="no-bullet"> + <li><a name="toc-Passing-Parameters-in-Registers" href="Register-Parameters.html#Register-Parameters">4.7.1 Passing Parameters in Registers</a></li> + <li><a name="toc-Storing-Parameters-as-Local-Variables" href="Local-Variable-Parameters.html#Local-Variable-Parameters">4.7.2 Storing Parameters as Local Variables</a></li> + <li><a name="toc-Passing-Parameters-by-Reference" href="Reference-Parameters.html#Reference-Parameters">4.7.3 Passing Parameters by Reference</a></li> + <li><a name="toc-Passing-Conformant-Array-Parameters" href="Conformant-Arrays.html#Conformant-Arrays">4.7.4 Passing Conformant Array Parameters</a></li> + </ul></li> + </ul></li> + <li><a name="toc-Defining-Types" href="Types.html#Types">5 Defining Types</a> + <ul class="no-bullet"> + <li><a name="toc-Builtin-Types-1" href="Builtin-Types.html#Builtin-Types">5.1 Builtin Types</a> + <ul class="no-bullet"> + <li><a name="toc-Traditional-Builtin-Types-1" href="Traditional-Builtin-Types.html#Traditional-Builtin-Types">5.1.1 Traditional Builtin Types</a> + <ul class="no-bullet"> + <li><a name="toc-Traditional-Integer-Types-1" href="Traditional-Integer-Types.html#Traditional-Integer-Types">5.1.1.1 Traditional Integer Types</a></li> + <li><a name="toc-Traditional-Other-Types-1" href="Traditional-Other-Types.html#Traditional-Other-Types">5.1.1.2 Traditional Other Types</a></li> + </ul></li> + <li><a name="toc-Defining-Builtin-Types-Using-Builtin-Type-Descriptors" href="Builtin-Type-Descriptors.html#Builtin-Type-Descriptors">5.1.2 Defining Builtin Types Using Builtin Type Descriptors</a></li> + <li><a name="toc-Negative-Type-Numbers-1" href="Negative-Type-Numbers.html#Negative-Type-Numbers">5.1.3 Negative Type Numbers</a></li> + </ul></li> + <li><a name="toc-Miscellaneous-Types-1" href="Miscellaneous-Types.html#Miscellaneous-Types">5.2 Miscellaneous Types</a></li> + <li><a name="toc-Cross_002dReferences-to-Other-Types" href="Cross_002dReferences.html#Cross_002dReferences">5.3 Cross-References to Other Types</a></li> + <li><a name="toc-Subrange-Types" href="Subranges.html#Subranges">5.4 Subrange Types</a></li> + <li><a name="toc-Array-Types" href="Arrays.html#Arrays">5.5 Array Types</a></li> + <li><a name="toc-Strings-1" href="Strings.html#Strings">5.6 Strings</a></li> + <li><a name="toc-Enumerations-1" href="Enumerations.html#Enumerations">5.7 Enumerations</a></li> + <li><a name="toc-Structures-1" href="Structures.html#Structures">5.8 Structures</a></li> + <li><a name="toc-Giving-a-Type-a-Name" href="Typedefs.html#Typedefs">5.9 Giving a Type a Name</a></li> + <li><a name="toc-Unions-1" href="Unions.html#Unions">5.10 Unions</a></li> + <li><a name="toc-Function-Types-1" href="Function-Types.html#Function-Types">5.11 Function Types</a></li> + </ul></li> + <li><a name="toc-Representation-of-_0023define-and-_0023undef" href="Macro-define-and-undefine.html#Macro-define-and-undefine">6 Representation of #define and #undef</a></li> + <li><a name="toc-Symbol-Information-in-Symbol-Tables" href="Symbol-Tables.html#Symbol-Tables">7 Symbol Information in Symbol Tables</a> + <ul class="no-bullet"> + <li><a name="toc-Symbol-Table-Format-1" href="Symbol-Table-Format.html#Symbol-Table-Format">7.1 Symbol Table Format</a></li> + <li><a name="toc-Transformations-on-Symbol-Tables" href="Transformations-On-Symbol-Tables.html#Transformations-On-Symbol-Tables">7.2 Transformations on Symbol Tables</a> + <ul class="no-bullet"> + <li><a name="toc-Transformations-on-Static-Variables" href="Transformations-On-Static-Variables.html#Transformations-On-Static-Variables">7.2.1 Transformations on Static Variables</a></li> + <li><a name="toc-Transformations-on-Global-Variables" href="Transformations-On-Global-Variables.html#Transformations-On-Global-Variables">7.2.2 Transformations on Global Variables</a></li> + <li><a name="toc-Transformations-of-Stabs-in-separate-sections" href="Stab-Section-Transformations.html#Stab-Section-Transformations">7.2.3 Transformations of Stabs in separate sections</a></li> + </ul></li> + </ul></li> + <li><a name="toc-GNU-C_002b_002b-Stabs" href="Cplusplus.html#Cplusplus">8 GNU C<tt>++</tt> Stabs</a> + <ul class="no-bullet"> + <li><a name="toc-C_002b_002b-Class-Names" href="Class-Names.html#Class-Names">8.1 C<tt>++</tt> Class Names</a></li> + <li><a name="toc-Defining-a-Symbol-Within-Another-Type" href="Nested-Symbols.html#Nested-Symbols">8.2 Defining a Symbol Within Another Type</a></li> + <li><a name="toc-Basic-Types-For-C_002b_002b" href="Basic-Cplusplus-Types.html#Basic-Cplusplus-Types">8.3 Basic Types For C<tt>++</tt></a></li> + <li><a name="toc-Simple-Class-Definition" href="Simple-Classes.html#Simple-Classes">8.4 Simple Class Definition</a></li> + <li><a name="toc-Class-Instance-1" href="Class-Instance.html#Class-Instance">8.5 Class Instance</a></li> + <li><a name="toc-Method-Definition" href="Methods.html#Methods">8.6 Method Definition</a></li> + <li><a name="toc-The-_0023-Type-Descriptor" href="Method-Type-Descriptor.html#Method-Type-Descriptor">8.7 The ‘<samp>#</samp>’ Type Descriptor</a></li> + <li><a name="toc-The-_0040-Type-Descriptor" href="Member-Type-Descriptor.html#Member-Type-Descriptor">8.8 The ‘<samp>@</samp>’ Type Descriptor</a></li> + <li><a name="toc-Protections-1" href="Protections.html#Protections">8.9 Protections</a></li> + <li><a name="toc-Method-Modifiers-_0028const_002c-volatile_002c-const-volatile_0029" href="Method-Modifiers.html#Method-Modifiers">8.10 Method Modifiers (<code>const</code>, <code>volatile</code>, <code>const volatile</code>)</a></li> + <li><a name="toc-Virtual-Methods-1" href="Virtual-Methods.html#Virtual-Methods">8.11 Virtual Methods</a></li> + <li><a name="toc-Inheritance-1" href="Inheritance.html#Inheritance">8.12 Inheritance</a></li> + <li><a name="toc-Virtual-Base-Classes-1" href="Virtual-Base-Classes.html#Virtual-Base-Classes">8.13 Virtual Base Classes</a></li> + <li><a name="toc-Static-Members-1" href="Static-Members.html#Static-Members">8.14 Static Members</a></li> + </ul></li> + <li><a name="toc-Table-of-Stab-Types" href="Stab-Types.html#Stab-Types">Appendix A Table of Stab Types</a> + <ul class="no-bullet"> + <li><a name="toc-Non_002dStab-Symbol-Types-1" href="Non_002dStab-Symbol-Types.html#Non_002dStab-Symbol-Types">A.1 Non-Stab Symbol Types</a></li> + <li><a name="toc-Stab-Symbol-Types-1" href="Stab-Symbol-Types.html#Stab-Symbol-Types">A.2 Stab Symbol Types</a></li> + </ul></li> + <li><a name="toc-Table-of-Symbol-Descriptors" href="Symbol-Descriptors.html#Symbol-Descriptors">Appendix B Table of Symbol Descriptors</a></li> + <li><a name="toc-Table-of-Type-Descriptors" href="Type-Descriptors.html#Type-Descriptors">Appendix C Table of Type Descriptors</a></li> + <li><a name="toc-Expanded-Reference-by-Stab-Type" href="Expanded-Reference.html#Expanded-Reference">Appendix D Expanded Reference by Stab Type</a> + <ul class="no-bullet"> + <li><a name="toc-N_005fPC-1" href="N_005fPC.html#N_005fPC">D.1 N_PC</a></li> + <li><a name="toc-N_005fNSYMS-1" href="N_005fNSYMS.html#N_005fNSYMS">D.2 N_NSYMS</a></li> + <li><a name="toc-N_005fNOMAP-1" href="N_005fNOMAP.html#N_005fNOMAP">D.3 N_NOMAP</a></li> + <li><a name="toc-N_005fM2C-1" href="N_005fM2C.html#N_005fM2C">D.4 N_M2C</a></li> + <li><a name="toc-N_005fBROWS-1" href="N_005fBROWS.html#N_005fBROWS">D.5 N_BROWS</a></li> + <li><a name="toc-N_005fDEFD-1" href="N_005fDEFD.html#N_005fDEFD">D.6 N_DEFD</a></li> + <li><a name="toc-N_005fEHDECL-1" href="N_005fEHDECL.html#N_005fEHDECL">D.7 N_EHDECL</a></li> + <li><a name="toc-N_005fMOD2-1" href="N_005fMOD2.html#N_005fMOD2">D.8 N_MOD2</a></li> + <li><a name="toc-N_005fCATCH-1" href="N_005fCATCH.html#N_005fCATCH">D.9 N_CATCH</a></li> + <li><a name="toc-N_005fSSYM-1" href="N_005fSSYM.html#N_005fSSYM">D.10 N_SSYM</a></li> + <li><a name="toc-N_005fSCOPE-1" href="N_005fSCOPE.html#N_005fSCOPE">D.11 N_SCOPE</a></li> + <li><a name="toc-Non_002dbase-registers-on-Gould-systems" href="Gould.html#Gould">D.12 Non-base registers on Gould systems</a></li> + <li><a name="toc-N_005fLENG-1" href="N_005fLENG.html#N_005fLENG">D.13 N_LENG</a></li> + </ul></li> + <li><a name="toc-Questions-and-Anomalies" href="Questions.html#Questions">Appendix E Questions and Anomalies</a></li> + <li><a name="toc-Using-Stabs-in-Their-Own-Sections" href="Stab-Sections.html#Stab-Sections">Appendix F Using Stabs in Their Own Sections</a> + <ul class="no-bullet"> + <li><a name="toc-How-to-Embed-Stabs-in-Sections" href="Stab-Section-Basics.html#Stab-Section-Basics">F.1 How to Embed Stabs in Sections</a></li> + <li><a name="toc-Having-the-Linker-Relocate-Stabs-in-ELF" href="ELF-Linker-Relocation.html#ELF-Linker-Relocation">F.2 Having the Linker Relocate Stabs in ELF</a></li> + </ul></li> + <li><a name="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">Appendix G GNU Free Documentation License</a></li> + <li><a name="toc-Symbol-Types-Index-1" href="Symbol-Types-Index.html#Symbol-Types-Index">Symbol Types Index</a></li> +</ul> +</div> + + +<hr> +<div class="header"> +<p> +Next: <a href="Overview.html#Overview" accesskey="n" rel="next">Overview</a>, Up: <a href="../dir/index.html" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |