| /* -*- sh -*- */ | |
| /* | |
| * Linker script for EFI images | |
| * | |
| */ | |
| SECTIONS { | |
| /* The file starts at a virtual address of zero, and sections are | |
| * contiguous. Each section is aligned to at least _page_align, | |
| * which defaults to 4096. Load addresses are equal to virtual | |
| * addresses. | |
| */ | |
| _page_align = 4096; | |
| /* Allow one page of space for file headers, common PE/COFF layout */ | |
| . = _page_align; | |
| /* | |
| * The text section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .text : { | |
| _text = .; | |
| *(.text) | |
| *(.text.*) | |
| _etext = .; | |
| } | |
| /* | |
| * The rodata section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .rodata : { | |
| _rodata = .; | |
| *(.srodata) | |
| *(.srodata.*) | |
| *(.rodata) | |
| *(.rodata.*) | |
| _erodata = .; | |
| } | |
| /* | |
| * The data section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .data : { | |
| _data = .; | |
| *(.sdata) | |
| *(.sdata.*) | |
| *(.data) | |
| *(.data.*) | |
| KEEP(*(SORT(.tbl.*))) /* Various tables. See include/tables.h */ | |
| KEEP(*(.provided)) | |
| KEEP(*(.provided.*)) | |
| _edata = .; | |
| } | |
| /* | |
| * The bss section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .bss : { | |
| _bss = .; | |
| *(.sbss) | |
| *(.sbss.*) | |
| *(.bss) | |
| *(.bss.*) | |
| *(COMMON) | |
| _ebss = .; | |
| } | |
| /* | |
| * The SBAT section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .sbat : { | |
| _sbat = .; | |
| KEEP(*(.sbat)) | |
| KEEP(*(.sbat.*)) | |
| _esbat = .; | |
| } | |
| /* | |
| * The SBOM section | |
| * | |
| */ | |
| . = ALIGN ( _page_align ); | |
| .sbom : { | |
| _sbom = .; | |
| KEEP(*(.sbom)) | |
| KEEP(*(.sbom.*)) | |
| _esbom = .; | |
| } | |
| /* | |
| * Weak symbols that need zero values if not otherwise defined | |
| * | |
| */ | |
| .weak 0x0 : { | |
| _weak = .; | |
| *(.weak) | |
| *(.weak.*) | |
| _eweak = .; | |
| } | |
| _assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" ); | |
| /* | |
| * iPXE-specific note sections | |
| * | |
| */ | |
| .note : { | |
| *(.note.ipxe) | |
| *(.note.ipxe.*) | |
| } | |
| /* | |
| * Dispose of the comment and note sections to make the link map | |
| * easier to read | |
| * | |
| */ | |
| /DISCARD/ : { | |
| *(.comment) | |
| *(.comment.*) | |
| *(.note) | |
| *(.note.*) | |
| *(.eh_frame) | |
| *(.eh_frame.*) | |
| *(.rel) | |
| *(.rel.*) | |
| *(.einfo) | |
| *(.einfo.*) | |
| *(.discard) | |
| *(.discard.*) | |
| *(.pci_devlist.*) | |
| } | |
| } |