diff options
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 552d5c9..bc15583 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -7384,7 +7384,14 @@ outputting a single uninitialized variable. A C statement (sans semicolon) to output to the stdio stream @var{stream} the assembler definition of a common-label named @var{name} whose size is @var{size} bytes. The variable @var{rounded} -is the size rounded up to whatever alignment the caller wants. +is the size rounded up to whatever alignment the caller wants. It is +possible that @var{size} may be zero, for instance if a struct with no +other member than a zero-length array is defined. In this case, the +backend must output a symbol definition that allocates at least one +byte, both so that the address of the resulting object does not compare +equal to any other, and because some object formats cannot even express +the concept of a zero-sized common symbol, as that is how they represent +an ordinary undefined external. Use the expression @code{assemble_name (@var{stream}, @var{name})} to output the name itself; before and after that, output the additional |