You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Nested-Procedures.html 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1992-2020 Free Software Foundation, Inc.
  4. Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
  5. and David MacKenzie.
  6. Permission is granted to copy, distribute and/or modify this document
  7. under the terms of the GNU Free Documentation License, Version 1.3 or
  8. any later version published by the Free Software Foundation; with no
  9. Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
  10. Texts. A copy of the license is included in the section entitled "GNU
  11. Free Documentation License". -->
  12. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>Nested Procedures (STABS)</title>
  16. <meta name="description" content="Nested Procedures (STABS)">
  17. <meta name="keywords" content="Nested Procedures (STABS)">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <link href="index.html#Top" rel="start" title="Top">
  22. <link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index">
  23. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  24. <link href="Program-Structure.html#Program-Structure" rel="up" title="Program Structure">
  25. <link href="Block-Structure.html#Block-Structure" rel="next" title="Block Structure">
  26. <link href="Procedures.html#Procedures" rel="prev" title="Procedures">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.indentedblock {margin-right: 0em}
  31. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  32. blockquote.smallquotation {font-size: smaller}
  33. div.display {margin-left: 3.2em}
  34. div.example {margin-left: 3.2em}
  35. div.lisp {margin-left: 3.2em}
  36. div.smalldisplay {margin-left: 3.2em}
  37. div.smallexample {margin-left: 3.2em}
  38. div.smalllisp {margin-left: 3.2em}
  39. kbd {font-style: oblique}
  40. pre.display {font-family: inherit}
  41. pre.format {font-family: inherit}
  42. pre.menu-comment {font-family: serif}
  43. pre.menu-preformatted {font-family: serif}
  44. pre.smalldisplay {font-family: inherit; font-size: smaller}
  45. pre.smallexample {font-size: smaller}
  46. pre.smallformat {font-family: inherit; font-size: smaller}
  47. pre.smalllisp {font-size: smaller}
  48. span.nolinebreak {white-space: nowrap}
  49. span.roman {font-family: initial; font-weight: normal}
  50. span.sansserif {font-family: sans-serif; font-weight: normal}
  51. ul.no-bullet {list-style: none}
  52. -->
  53. </style>
  54. </head>
  55. <body lang="en">
  56. <a name="Nested-Procedures"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="Block-Structure.html#Block-Structure" accesskey="n" rel="next">Block Structure</a>, Previous: <a href="Procedures.html#Procedures" accesskey="p" rel="prev">Procedures</a>, Up: <a href="Program-Structure.html#Program-Structure" accesskey="u" rel="up">Program Structure</a> &nbsp; [<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>
  60. </div>
  61. <hr>
  62. <a name="Nested-Procedures-1"></a>
  63. <h3 class="section">2.6 Nested Procedures</h3>
  64. <p>For any of the symbol descriptors representing procedures, after the
  65. symbol descriptor and the type information is optionally a scope
  66. specifier. This consists of a comma, the name of the procedure, another
  67. comma, and the name of the enclosing procedure. The first name is local
  68. to the scope specified, and seems to be redundant with the name of the
  69. symbol (before the &lsquo;<samp>:</samp>&rsquo;). This feature is used by GCC, and
  70. presumably Pascal, Modula-2, etc., compilers, for nested functions.
  71. </p>
  72. <p>If procedures are nested more than one level deep, only the immediately
  73. containing scope is specified. For example, this code:
  74. </p>
  75. <div class="example">
  76. <pre class="example">int
  77. foo (int x)
  78. {
  79. int bar (int y)
  80. {
  81. int baz (int z)
  82. {
  83. return x + y + z;
  84. }
  85. return baz (x + 2 * y);
  86. }
  87. return x + bar (3 * x);
  88. }
  89. </pre></div>
  90. <p>produces the stabs:
  91. </p>
  92. <div class="example">
  93. <pre class="example">.stabs &quot;baz:f1,baz,bar&quot;,36,0,0,_baz.15 # <span class="roman">36 is N_FUN</span>
  94. .stabs &quot;bar:f1,bar,foo&quot;,36,0,0,_bar.12
  95. .stabs &quot;foo:F1&quot;,36,0,0,_foo
  96. </pre></div>
  97. </body>
  98. </html>