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