Next: Label Output, Previous: Data Output, Up: Assembler Format
Each of the macros in this section is used to do the whole job of outputting a single uninitialized variable.
A C statement (sans semicolon) to output to the stdio stream stream the assembler definition of a common-label named name whose size is size bytes. The variable rounded is the size rounded up to whatever alignment the caller wants.
Use the expression
assemble_name (stream,name)to output the name itself; before and after that, output the additional assembler syntax for defining the name, and a newline.This macro controls how the assembler definitions of uninitialized common global variables are output.
Like
ASM_OUTPUT_COMMONexcept takes the required alignment as a separate, explicit argument. If you define this macro, it is used in place ofASM_OUTPUT_COMMON, and gives you more flexibility in handling the required alignment of the variable. The alignment is specified as the number of bits.
Like
ASM_OUTPUT_ALIGNED_COMMONexcept that decl of the variable to be output, if there is one, orNULL_TREEif there is no corresponding variable. If you define this macro, GCC will use it in place of bothASM_OUTPUT_COMMONandASM_OUTPUT_ALIGNED_COMMON. Define this macro when you need to see the variable's decl in order to chose what to output.
If defined, it is similar to
ASM_OUTPUT_COMMON, except that it is used when name is shared. If not defined,ASM_OUTPUT_COMMONwill be used.
A C statement (sans semicolon) to output to the stdio stream stream the assembler definition of uninitialized global decl named name whose size is size bytes. The variable rounded is the size rounded up to whatever alignment the caller wants.
Try to use function
asm_output_bssdefined in varasm.c when defining this macro. If unable, use the expressionassemble_name (stream,name)to output the name itself; before and after that, output the additional assembler syntax for defining the name, and a newline.This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly support languages like C++ which do not have
commondata. However, this macro currently is not defined for all targets. If this macro andASM_OUTPUT_ALIGNED_BSSare not defined thenASM_OUTPUT_COMMONorASM_OUTPUT_ALIGNED_COMMONorASM_OUTPUT_ALIGNED_DECL_COMMONis used.
Like
ASM_OUTPUT_BSSexcept takes the required alignment as a separate, explicit argument. If you define this macro, it is used in place ofASM_OUTPUT_BSS, and gives you more flexibility in handling the required alignment of the variable. The alignment is specified as the number of bits.Try to use function
asm_output_aligned_bssdefined in file varasm.c when defining this macro.
If defined, it is similar to
ASM_OUTPUT_BSS, except that it is used when name is shared. If not defined,ASM_OUTPUT_BSSwill be used.
A C statement (sans semicolon) to output to the stdio stream stream the assembler definition of a local-common-label named name whose size is size bytes. The variable rounded is the size rounded up to whatever alignment the caller wants.
Use the expression
assemble_name (stream,name)to output the name itself; before and after that, output the additional assembler syntax for defining the name, and a newline.This macro controls how the assembler definitions of uninitialized static variables are output.
Like
ASM_OUTPUT_LOCALexcept takes the required alignment as a separate, explicit argument. If you define this macro, it is used in place ofASM_OUTPUT_LOCAL, and gives you more flexibility in handling the required alignment of the variable. The alignment is specified as the number of bits.
Like
ASM_OUTPUT_ALIGNED_DECLexcept that decl of the variable to be output, if there is one, orNULL_TREEif there is no corresponding variable. If you define this macro, GCC will use it in place of bothASM_OUTPUT_DECLandASM_OUTPUT_ALIGNED_DECL. Define this macro when you need to see the variable's decl in order to chose what to output.