diff options
Diffstat (limited to 'tools/elf2efi.lds')
-rw-r--r-- | tools/elf2efi.lds | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/elf2efi.lds b/tools/elf2efi.lds new file mode 100644 index 0000000000..eed9e279e9 --- /dev/null +++ b/tools/elf2efi.lds @@ -0,0 +1,49 @@ +SECTIONS { + /* We skip the first page because the space will be occupied by the PE headers after conversion. */ + . = CONSTANT(MAXPAGESIZE); + .text ALIGN(CONSTANT(MAXPAGESIZE)) : { + *(.text .text.*) + } + .rodata ALIGN(CONSTANT(MAXPAGESIZE)) : { + *(.rodata .rodata.*) + *(.srodata .srodata.*) + } + .data ALIGN(CONSTANT(MAXPAGESIZE)) : { + *(.data .data.*) + *(.sdata .sdata.*) + *(.got .got.*) + *(.got.plt .got.plt.*) + + /* EDK2 says some firmware cannot handle BSS sections properly. */ + *(.bss .bss.*) + *(.sbss .sbss.*) + *(COMMON) + } + + .sdmagic ALIGN(CONSTANT(MAXPAGESIZE)) : { *(.sdmagic) } + .osrel ALIGN(CONSTANT(MAXPAGESIZE)) : { *(.osrel) } + .sbat ALIGN(CONSTANT(MAXPAGESIZE)) : { *(.sbat) } + + /* These are used for PE conversion and then discarded. */ + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .dynamic : { *(.dynamic) } + .rel.dyn : { *(.rel.dyn) } + .rela.dyn : { *(.rela.dyn) } + + /* These aren't needed and could be discarded. Just in case that they're useful to the debugger + * we keep them, but move them out of the way to keep the PE binary more compact. */ + .ARM.exidx : { *(.ARM.exidx) } + .eh_frame : { *(.eh_frame) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .gnu.hash : { *(.gnu.hash) } + .hash : { *(.hash) } + .note.gnu.build-id : { *(.note.gnu.build-id ) } + + /DISCARD/ : { + *(.ARM.attributes) + *(.comment) + *(.note.*) + *(.riscv.attributes) + } +} |