<html lang="en"> <head> <title>Comm - Using as</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="Using as"> <meta name="generator" content="makeinfo 4.7"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Pseudo-Ops.html#Pseudo-Ops" title="Pseudo Ops"> <link rel="prev" href="Byte.html#Byte" title="Byte"> <link rel="next" href="CFI-directives.html#CFI-directives" title="CFI directives"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- This file documents the GNU Assembler "as". Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2006, 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 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''. man end--> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family: serif; font-weight: normal; } --></style> </head> <body> <div class="node"> <p> <a name="Comm"></a>Next: <a rel="next" accesskey="n" href="CFI-directives.html#CFI-directives">CFI directives</a>, Previous: <a rel="previous" accesskey="p" href="Byte.html#Byte">Byte</a>, Up: <a rel="up" accesskey="u" href="Pseudo-Ops.html#Pseudo-Ops">Pseudo Ops</a> <hr><br> </div> <h3 class="section">7.8 <code>.comm </code><var>symbol</var><code> , </code><var>length</var> </h3> <p><a name="index-_0040code_007bcomm_007d-directive-288"></a><a name="index-symbol_002c-common-289"></a><code>.comm</code> declares a common symbol named <var>symbol</var>. When linking, a common symbol in one object file may be merged with a defined or common symbol of the same name in another object file. If <code>ld</code> does not see a definition for the symbol–just one or more common symbols–then it will allocate <var>length</var> bytes of uninitialized memory. <var>length</var> must be an absolute expression. If <code>ld</code> sees multiple common symbols with the same name, and they do not all have the same size, it will allocate space using the largest size. <p>When using ELF, the <code>.comm</code> directive takes an optional third argument. This is the desired alignment of the symbol, specified as a byte boundary (for example, an alignment of 16 means that the least significant 4 bits of the address should be zero). The alignment must be an absolute expression, and it must be a power of two. If <code>ld</code> allocates uninitialized memory for the common symbol, it will use the alignment when placing the symbol. If no alignment is specified, <span class="command">as</span> will set the alignment to the largest power of two less than or equal to the size of the symbol, up to a maximum of 16. <p>The syntax for <code>.comm</code> differs slightly on the HPPA. The syntax is <var>symbol</var><span class="samp"> .comm, </span><var>length</var>; <var>symbol</var> is optional. </body></html>