SECTIONS { # This starts off fairly normal: rodata, text, data, relro, bss with # appropriate alignment between them. . = SIZEOF_HEADERS; .rodata : {} . = ALIGN(0x1000); .text : {} . = ALIGN(0x1000); .data : {} . = ALIGN(0x1000); .data.rel.ro : {} . = ALIGN(0x1000); .bss : {} # Now create the gap. We need a text segment first to prevent the linker from # merging .bss with .bss.end_of_gap. . = ALIGN(0x1000); .text.text_before_start_of_gap : { *(.text.text_before_start_of_gap); } # Place end_of_gap at the end of the gap. . = 0x1000000; .bss.end_of_gap : { *(.bss.end_of_gap); } }