Creating Memory Gaps

You can create gaps in memory by performing alignment calculations such as

. = (. + 0x20) & ~0x20;
  

This kind of calculation can occur between output_specs , between input_specs, or even in address_modifiers . A "." refers to the current address. You may assign the . to a specific unallocated address or just do alignment as the example shows. The gap is filled with zeroes, in the case of an alignment (but not with ALIGN() ).

You can specify an alternate fill pattern with = <short_value> , as in

.text : { . = (. + 0x20) & ~0x20; *(.text) } = 0xAB > text
  

short_value is 2 bytes long. Note that the fill pattern comes before the memory_spec . You can add a fill to a GROUP or to an individual output_spec section. Fills cannot be added between .bss type sections. All calculations must end in a " ; ".

Related information
Specifying Link Order in the IDE
Dead-Stripping
Defining the Target's Memory Map
Defining Sections in the Output File
Associating Input Sections With Output Sections
Controlling Alignment
Specifying Memory Area Locations and Sizes
Creating Symbols
Linker Command File Syntax
Commands, Directives, and Keywords