(as) Comm
Info Catalog
(as) CFI directives
(as) Pseudo Ops
(as) Data
7.30 `.comm SYMBOL , LENGTH '
=============================
`.comm' declares a common symbol named SYMBOL. 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 `ld' does not see a
definition for the symbol-just one or more common symbols-then it will
allocate LENGTH bytes of uninitialized memory. LENGTH must be an
absolute expression. If `ld' 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.
When using ELF or (as a GNU extension) PE, the `.comm' directive
takes an optional third argument. This is the desired alignment of the
symbol, specified for ELF as a byte boundary (for example, an alignment
of 16 means that the least significant 4 bits of the address should be
zero), and for PE as a power of two (for example, an alignment of 5
means aligned to a 32-byte boundary). The alignment must be an
absolute expression, and it must be a power of two. If `ld' allocates
uninitialized memory for the common symbol, it will use the alignment
when placing the symbol. If no alignment is specified, `as' 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 on ELF, or the default
section alignment of 4 on PE(1).
The syntax for `.comm' differs slightly on the HPPA. The syntax is
`SYMBOL .comm, LENGTH'; SYMBOL is optional.
---------- Footnotes ----------
(1) This is not the same as the executable image file alignment
controlled by `ld''s `--section-alignment' option; image file sections
in PE are aligned to multiples of 4096, which is far too large an
alignment for ordinary variables. It is rather the default alignment
for (non-debug) sections within object (`*.o') files, which are less
strictly aligned.
Info Catalog
(as) CFI directives
(as) Pseudo Ops
(as) Data
automatically generated by
info2html