diff options
author | Michael Brown <mcb30@ipxe.org> | 2016-03-12 21:47:13 +0000 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2016-03-12 21:47:13 +0000 |
commit | a8037ee131a9501ddfc89ce157e3718b1a3b86a7 (patch) | |
tree | 918210dd467c16d5778a9ebd229d5060957a3ce5 /src/scripts | |
parent | 86f96a40f490b1f10662a2d94a86a01276d2a125 (diff) | |
download | ipxe-a8037ee131a9501ddfc89ce157e3718b1a3b86a7.tar.gz |
[efi] Centralise architecture-independent EFI Makefile and linker script
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/scripts')
-rw-r--r-- | src/scripts/efi.lds | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/scripts/efi.lds b/src/scripts/efi.lds new file mode 100644 index 000000000..f1049f24b --- /dev/null +++ b/src/scripts/efi.lds @@ -0,0 +1,110 @@ +/* -*- 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 _max_align, + * which defaults to 32. Load addresses are equal to virtual + * addresses. + */ + + _max_align = 32; + + /* Allow plenty of space for file headers */ + . = 0x1000; + + /* + * The text section + * + */ + + . = ALIGN ( _max_align ); + .text : { + _text = .; + *(.text) + *(.text.*) + _etext = .; + } + + /* + * The rodata section + * + */ + + . = ALIGN ( _max_align ); + .rodata : { + _rodata = .; + *(.rodata) + *(.rodata.*) + _erodata = .; + } + + /* + * The data section + * + */ + + . = ALIGN ( _max_align ); + .data : { + _data = .; + *(.data) + *(.data.*) + KEEP(*(SORT(.tbl.*))) /* Various tables. See include/tables.h */ + KEEP(*(.provided)) + KEEP(*(.provided.*)) + _edata = .; + } + + /* + * The bss section + * + */ + + . = ALIGN ( _max_align ); + .bss : { + _bss = .; + *(.bss) + *(.bss.*) + *(COMMON) + _ebss = .; + } + + /* + * 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" ); + + /* + * 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.*) + } +} |