[PATCH 4/4] arm: EFI linker script text section alignment
Raymond Mao
raymond.mao at linaro.org
Fri May 10 18:32:12 CEST 2024
Hi Ilias,
On Thu, 9 May 2024 at 14:15, Ilias Apalodimas <ilias.apalodimas at linaro.org>
wrote:
> Hi Raymond,
>
> Try not to post the same patches without the fixes that were asked
> [0], at least not without an explanation.
>
> On Thu, 9 May 2024 at 17:38, Raymond Mao <raymond.mao at linaro.org> wrote:
> >
> > Add text section alignment to fix sbsign signing warning
> > 'gaps in the section table may result in different checksums'
> > which causes a failure of efi_image_verify_diges()
> >
> > Signed-off-by: Raymond Mao <raymond.mao at linaro.org>
> > ---
> > arch/arm/lib/elf_aarch64_efi.lds | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/arm/lib/elf_aarch64_efi.lds
> b/arch/arm/lib/elf_aarch64_efi.lds
> > index 5dd98091698..bffd9a0447a 100644
> > --- a/arch/arm/lib/elf_aarch64_efi.lds
> > +++ b/arch/arm/lib/elf_aarch64_efi.lds
> > @@ -28,6 +28,7 @@ SECTIONS
> > *(.dynamic);
> > . = ALIGN(512);
> > }
> > + . = ALIGN(4096);
>
> This is not what you want. There's already an ALIGN a few lines below
> and you must include the symbols for _etext and _text_size.
> You have to move the rela.* sections after the alignment. IIRC those
> were inspired by [1], so you can look for guidance there.
> On top of that riscv will need similar fixes (and any other
> architecture that uses those)
>
> In practice, I have to add ALIGN(4096) for both `.rela.*` and `.data`,
otherwise it always prompts warning when signing the EFI image as
below and finally leads a failure when calling function
`efi_image_verify_digest()`.
```
warning: gap in section table:
.text : 0x00001000 - 0x00001c00,
.data : 0x00002000 - 0x00002200,
gaps in the section table may result in different checksums
warning: data remaining[7680 vs 12720]: gaps between PE/COFF sections?
```
I am not sure if RISC-V is working, never tried to build with that.
But arm32, x86 should be fine - they don't have the `.rela.*` sections and
text and data sections are well aligned.
> > .rela.dyn : { *(.rela.dyn) }
> > .rela.plt : { *(.rela.plt) }
> > .rela.got : { *(.rela.got) }
> > --
> > 2.25.1
> >
>
> [0]
> https://lore.kernel.org/u-boot/CAC_iWjK+14L6mEi8GQN-McF-SChvhnjJ79nE1tWLV+kgWZKVew@mail.gmail.com/
> [1] https://git.code.sf.net/p/gnu-efi/code
>
>
Regards,
Raymond
More information about the U-Boot
mailing list