On Tue, 14 Jan 2025 at 12:30, Heinrich Schuchardt <[email protected]> wrote: > > Except for the architecture specific lines ARM and RISC-V can use the same > linker script. Move the common lines to an include. > > Signed-off-by: Heinrich Schuchardt <[email protected]> > --- > arch/arm/lib/elf_aarch64_efi.lds | 68 +-------------------------- > arch/riscv/lib/elf_riscv32_efi.lds | 68 +-------------------------- > arch/riscv/lib/elf_riscv64_efi.lds | 68 +-------------------------- > lib/efi_loader/elf_efi.ldsi | 74 ++++++++++++++++++++++++++++++ > 4 files changed, 77 insertions(+), 201 deletions(-) > create mode 100644 lib/efi_loader/elf_efi.ldsi > > diff --git a/arch/arm/lib/elf_aarch64_efi.lds > b/arch/arm/lib/elf_aarch64_efi.lds > index e382254a6cf..453d3511c28 100644 > --- a/arch/arm/lib/elf_aarch64_efi.lds > +++ b/arch/arm/lib/elf_aarch64_efi.lds > @@ -8,70 +8,4 @@ > OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", > "elf64-littleaarch64") > OUTPUT_ARCH(aarch64) > > -PHDRS > -{ > - data PT_LOAD FLAGS(3); /* SHF_WRITE | SHF_ALLOC */ > -} > - > -ENTRY(_start) > -SECTIONS > -{ > - .text 0x0 : { > - _text = .; > - *(.text.head) > - *(.text) > - *(.text.*) > - *(.gnu.linkonce.t.*) > - *(.srodata) > - *(.rodata*) > - . = ALIGN(16); > - *(.dynamic); > - . = ALIGN(512); > - } > - .rela.dyn : { *(.rela.dyn) } > - .rela.plt : { *(.rela.plt) } > - .rela.got : { *(.rela.got) } > - .rela.data : { *(.rela.data) *(.rela.data*) } > - . = ALIGN(4096); > - _etext = .; > - _text_size = . - _text; > - .data : { > - _data = .; > - *(.sdata) > - *(.data) > - *(.data1) > - *(.data.*) > - *(.got.plt) > - *(.got) > - > - /* > - * The EFI loader doesn't seem to like a .bss section, so we > - * stick it all into .data: > - */ > - . = ALIGN(16); > - _bss = .; > - *(.sbss) > - *(.scommon) > - *(.dynbss) > - *(.bss) > - *(.bss.*) > - *(COMMON) > - . = ALIGN(512); > - _bss_end = .; > - _edata = .; > - } :data > - _data_size = _edata - _data; > - > - . = ALIGN(4096); > - .dynsym : { *(.dynsym) } > - . = ALIGN(4096); > - .dynstr : { *(.dynstr) } > - . = ALIGN(4096); > - .note.gnu.build-id : { *(.note.gnu.build-id) } > - /DISCARD/ : { > - *(.rel.reloc) > - *(.eh_frame) > - *(.note.GNU-stack) > - } > - .comment 0 : { *(.comment) } > -} > +INCLUDE lib/efi_loader/elf_efi.ldsi > diff --git a/arch/riscv/lib/elf_riscv32_efi.lds > b/arch/riscv/lib/elf_riscv32_efi.lds > index 7b9bd7b7f15..e23521c4931 100644 > --- a/arch/riscv/lib/elf_riscv32_efi.lds > +++ b/arch/riscv/lib/elf_riscv32_efi.lds > @@ -8,70 +8,4 @@ > OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", "elf32-littleriscv") > OUTPUT_ARCH(riscv) > > -PHDRS > -{ > - data PT_LOAD FLAGS(3); /* SHF_WRITE | SHF_ALLOC */ > -} > - > -ENTRY(_start) > -SECTIONS > -{ > - .text 0x0 : { > - _text = .; > - *(.text.head) > - *(.text) > - *(.text.*) > - *(.gnu.linkonce.t.*) > - *(.srodata) > - *(.rodata*) > - . = ALIGN(16); > - *(.dynamic); > - . = ALIGN(512); > - } > - .rela.dyn : { *(.rela.dyn) } > - .rela.plt : { *(.rela.plt) } > - .rela.got : { *(.rela.got) } > - .rela.data : { *(.rela.data) *(.rela.data*) } > - _etext = .; > - _text_size = . - _text; > - . = ALIGN(4096); > - .data : { > - _data = .; > - *(.sdata) > - *(.data) > - *(.data1) > - *(.data.*) > - *(.got.plt) > - *(.got) > - > - /* > - * The EFI loader doesn't seem to like a .bss section, so we > - * stick it all into .data: > - */ > - . = ALIGN(16); > - _bss = .; > - *(.sbss) > - *(.scommon) > - *(.dynbss) > - *(.bss) > - *(.bss.*) > - *(COMMON) > - . = ALIGN(512); > - _bss_end = .; > - _edata = .; > - } :data > - _data_size = _edata - _data; > - > - . = ALIGN(4096); > - .dynsym : { *(.dynsym) } > - . = ALIGN(4096); > - .dynstr : { *(.dynstr) } > - . = ALIGN(4096); > - .note.gnu.build-id : { *(.note.gnu.build-id) } > - /DISCARD/ : { > - *(.rel.reloc) > - *(.eh_frame) > - *(.note.GNU-stack) > - } > - .comment 0 : { *(.comment) } > -} > +INCLUDE lib/efi_loader/elf_efi.ldsi > diff --git a/arch/riscv/lib/elf_riscv64_efi.lds > b/arch/riscv/lib/elf_riscv64_efi.lds > index d0b4f3d1d64..8e4844c2eea 100644 > --- a/arch/riscv/lib/elf_riscv64_efi.lds > +++ b/arch/riscv/lib/elf_riscv64_efi.lds > @@ -8,70 +8,4 @@ > OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv") > OUTPUT_ARCH(riscv) > > -PHDRS > -{ > - data PT_LOAD FLAGS(3); /* SHF_WRITE | SHF_ALLOC */ > -} > - > -ENTRY(_start) > -SECTIONS > -{ > - .text 0x0 : { > - _text = .; > - *(.text.head) > - *(.text) > - *(.text.*) > - *(.gnu.linkonce.t.*) > - *(.srodata) > - *(.rodata*) > - . = ALIGN(16); > - *(.dynamic); > - . = ALIGN(512); > - } > - .rela.dyn : { *(.rela.dyn) } > - .rela.plt : { *(.rela.plt) } > - .rela.got : { *(.rela.got) } > - .rela.data : { *(.rela.data) *(.rela.data*) } > - _etext = .; > - _text_size = . - _text; > - . = ALIGN(4096); > - .data : { > - _data = .; > - *(.sdata) > - *(.data) > - *(.data1) > - *(.data.*) > - *(.got.plt) > - *(.got) > - > - /* > - * The EFI loader doesn't seem to like a .bss section, so we > - * stick it all into .data: > - */ > - . = ALIGN(16); > - _bss = .; > - *(.sbss) > - *(.scommon) > - *(.dynbss) > - *(.bss) > - *(.bss.*) > - *(COMMON) > - . = ALIGN(512); > - _bss_end = .; > - _edata = .; > - } :data > - _data_size = _edata - _data; > - > - . = ALIGN(4096); > - .dynsym : { *(.dynsym) } > - . = ALIGN(4096); > - .dynstr : { *(.dynstr) } > - . = ALIGN(4096); > - .note.gnu.build-id : { *(.note.gnu.build-id) } > - /DISCARD/ : { > - *(.rel.reloc) > - *(.eh_frame) > - *(.note.GNU-stack) > - } > - .comment 0 : { *(.comment) } > -} > +INCLUDE lib/efi_loader/elf_efi.ldsi > diff --git a/lib/efi_loader/elf_efi.ldsi b/lib/efi_loader/elf_efi.ldsi > new file mode 100644 > index 00000000000..190a88fb69e > --- /dev/null > +++ b/lib/efi_loader/elf_efi.ldsi > @@ -0,0 +1,74 @@ > +/* SPDX-License-Identifier: BSD-2-Clause */ > +/* > + * U-Boot EFI linker script include > + * > + * Modified from elf_aarch64_efi.lds in gnu-efi > + */ > + > +PHDRS > +{ > + data PT_LOAD FLAGS(3); /* SHF_WRITE | SHF_ALLOC */ > +} > + > +ENTRY(_start) > +SECTIONS > +{ > + .text 0x0 : { > + _text = .; > + *(.text.head) > + *(.text) > + *(.text.*) > + *(.gnu.linkonce.t.*) > + *(.srodata) > + *(.rodata*) > + . = ALIGN(16); > + *(.dynamic); > + . = ALIGN(512); > + } > + .rela.dyn : { *(.rela.dyn) } > + .rela.plt : { *(.rela.plt) } > + .rela.got : { *(.rela.got) } > + .rela.data : { *(.rela.data) *(.rela.data*) } > + . = ALIGN(4096); > + _etext = .; > + _text_size = . - _text; > + .data : { > + _data = .; > + *(.sdata) > + *(.data) > + *(.data1) > + *(.data.*) > + *(.got.plt) > + *(.got) > + > + /* > + * The EFI loader doesn't seem to like a .bss section, so we > + * stick it all into .data: > + */ > + . = ALIGN(16); > + _bss = .; > + *(.sbss) > + *(.scommon) > + *(.dynbss) > + *(.bss) > + *(.bss.*) > + *(COMMON) > + . = ALIGN(512); > + _bss_end = .; > + _edata = .; > + } :data > + _data_size = _edata - _data; > + > + . = ALIGN(4096); > + .dynsym : { *(.dynsym) } > + . = ALIGN(4096); > + .dynstr : { *(.dynstr) } > + . = ALIGN(4096); > + .note.gnu.build-id : { *(.note.gnu.build-id) } > + /DISCARD/ : { > + *(.rel.reloc) > + *(.eh_frame) > + *(.note.GNU-stack) > + } > + .comment 0 : { *(.comment) } > +} > -- > 2.47.1 >
Reviewed-by: Ilias Apalodimas <[email protected]>

