From 2afeaf1675a6a68636be493a9461e72ce067db19 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Mon, 27 Feb 2023 16:54:48 +0100 Subject: boot: Bring back bootloader builds This adds back sd-boot builds by using meson compile targets directly. We can do this now, because userspace binaries use the special dependency that allows us to easily separate flags, so that we don't pass anything to EFI builds that shouldn't be passed. Additionally, we pass a bunch of flags to hopefully disable/override any distro provided flags that should not be used for EFI binaries. Fixes: #12275 --- tools/elf2efi.lds | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tools/elf2efi.lds (limited to 'tools/elf2efi.lds') 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) + } +} -- cgit v1.2.1