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: Block Structure</title> 16 17<meta name="description" content="STABS: Block Structure"> 18<meta name="keywords" content="STABS: Block Structure"> 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="Alternate-Entry-Points.html#Alternate-Entry-Points" rel="next" title="Alternate Entry Points"> 28<link href="Nested-Procedures.html#Nested-Procedures" rel="previous" title="Nested 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="Block-Structure"></a> 63<div class="header"> 64<p> 65Next: <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> 66</div> 67<hr> 68<a name="Block-Structure-1"></a> 69<h3 class="section">2.7 Block Structure</h3> 70 71<a name="index-N_005fLBRAC"></a> 72<a name="index-N_005fRBRAC"></a> 73<p>The program’s block structure is represented by the <code>N_LBRAC</code> (left 74brace) and the <code>N_RBRAC</code> (right brace) stab types. The variables 75defined inside a block precede the <code>N_LBRAC</code> symbol for most 76compilers, including GCC. Other compilers, such as the Convex, Acorn 77RISC machine, and Sun <code>acc</code> compilers, put the variables after the 78<code>N_LBRAC</code> symbol. The values of the <code>N_LBRAC</code> and 79<code>N_RBRAC</code> symbols are the start and end addresses of the code of 80the block, respectively. For most machines, they are relative to the 81starting address of this source file. For the Gould NP1, they are 82absolute. For stabs in sections (see <a href="Stab-Sections.html#Stab-Sections">Stab Sections</a>), they are 83relative to the function in which they occur. 84</p> 85<p>The <code>N_LBRAC</code> and <code>N_RBRAC</code> stabs that describe the block 86scope of a procedure are located after the <code>N_FUN</code> stab that 87represents the procedure itself. 88</p> 89<p>Sun documents the desc field of <code>N_LBRAC</code> and 90<code>N_RBRAC</code> symbols as containing the nesting level of the block. 91However, dbx seems to not care, and GCC always sets desc to 92zero. 93</p> 94<a name="index-_002ebb"></a> 95<a name="index-_002ebe"></a> 96<a name="index-C_005fBLOCK"></a> 97<p>For XCOFF, block scope is indicated with <code>C_BLOCK</code> symbols. If the 98name of the symbol is ‘<samp>.bb</samp>’, then it is the beginning of the block; 99if the name of the symbol is ‘<samp>.be</samp>’; it is the end of the block. 100</p> 101 102 103 104</body> 105</html> 106