Each of the macros in this section is used to do the whole job of outputting a single uninitialized variable.
ASM_OUTPUT_COMMON (stream, name, size, rounded) 
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 global variables are output.
ASM_OUTPUT_ALIGNED_COMMON (stream, name, size, alignment) ASM_OUTPUT_COMMON  except takes the required alignment as a separate, explicit argument. If you define this macro, it is used in place of ASM_OUTPUT_COMMON , and gives you more flexibility in handling the required alignment of the variable. The alignment is specified as the number of bits. 
ASM_OUTPUT_SHARED_COMMON (stream, name, size, rounded) ASM_OUTPUT_COMMON , except that it is used when name is shared. If not defined, ASM_OUTPUT_COMMON  will be used. 
ASM_OUTPUT_LOCAL (stream, name, size, rounded) 
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.
ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, alignment) ASM_OUTPUT_LOCAL  except takes the required alignment as a separate, explicit argument. If you define this macro, it is used in place of ASM_OUTPUT_LOCAL , and gives you more flexibility in handling the required alignment of the variable. The alignment is specified as the number of bits. 
ASM_OUTPUT_SHARED_LOCAL (stream, name, size, rounded) ASM_OUTPUT_LOCAL , except that it is used when name is shared. If not defined, ASM_OUTPUT_LOCAL  will be used.