On Thu, 16 Jan 2025 at 13:39, Heinrich Schuchardt <[email protected]> wrote: > > The fields SizeOfCode, SizeOfInitializedData, and SizeOfUninitializedData > are define in the PE-COFF specification [1]. > > * SizeOfCode must match the size of all .text sections. > * SizeOfInitializedData must match the size of all .data sections. > * SizeOfUninitializedData must match the size of all .bss sections. > > We only have one .text and one .data section. SizeOfCode and > SizeOfInitializedData have to be calculated as the difference between > the end and the start of the respective section. > > As we don't have any .bss sections in the generated EFI binaries. > SizeOfUninitializedData must remain 0. > > [1] https://learn.microsoft.com/en-us/windows/win32/debug/pe-format > > Signed-off-by: Heinrich Schuchardt <[email protected]> > --- > v2: > new patch > --- > arch/arm/lib/crt0_aarch64_efi.S | 2 +- > arch/arm/lib/crt0_arm_efi.S | 4 ++-- > arch/riscv/lib/crt0_riscv_efi.S | 4 ++-- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/lib/crt0_aarch64_efi.S b/arch/arm/lib/crt0_aarch64_efi.S > index fe6eca576ec..e21b54fdbcb 100644 > --- a/arch/arm/lib/crt0_aarch64_efi.S > +++ b/arch/arm/lib/crt0_aarch64_efi.S > @@ -41,7 +41,7 @@ optional_header: > .byte 0x02 /* MajorLinkerVersion */ > .byte 0x14 /* MinorLinkerVersion */ > .long _etext - _start /* SizeOfCode */ > - .long 0 /* SizeOfInitializedData */ > + .long _data_size /* SizeOfInitializedData */ > .long 0 /* SizeOfUninitializedData */ > .long _start - ImageBase /* AddressOfEntryPoint */ > .long _start - ImageBase /* BaseOfCode */ > diff --git a/arch/arm/lib/crt0_arm_efi.S b/arch/arm/lib/crt0_arm_efi.S > index b5dfd4e3819..3664cce8412 100644 > --- a/arch/arm/lib/crt0_arm_efi.S > +++ b/arch/arm/lib/crt0_arm_efi.S > @@ -38,8 +38,8 @@ optional_header: > .short IMAGE_NT_OPTIONAL_HDR32_MAGIC /* PE32 format */ > .byte 0x02 /* MajorLinkerVersion */ > .byte 0x14 /* MinorLinkerVersion */ > - .long _edata - _start /* SizeOfCode */ > - .long 0 /* SizeOfInitializedData */ > + .long _etext - _start /* SizeOfCode */ > + .long _data_size /* SizeOfInitializedData */ > .long 0 /* SizeOfUninitializedData */ > .long _start - image_base /* AddressOfEntryPoint */ > .long _start - image_base /* BaseOfCode */ > diff --git a/arch/riscv/lib/crt0_riscv_efi.S b/arch/riscv/lib/crt0_riscv_efi.S > index c7a4559eac8..9eacbe4a859 100644 > --- a/arch/riscv/lib/crt0_riscv_efi.S > +++ b/arch/riscv/lib/crt0_riscv_efi.S > @@ -63,8 +63,8 @@ optional_header: > .short PE_MAGIC /* PE32(+) format */ > .byte 0x02 /* MajorLinkerVersion */ > .byte 0x14 /* MinorLinkerVersion */ > - .long _edata - _start /* SizeOfCode */ > - .long 0 /* SizeOfInitializedData */ > + .long _etext - _start /* SizeOfCode */ > + .long _data_size /* SizeOfInitializedData */ > .long 0 /* SizeOfUninitializedData */ > .long _start - ImageBase /* AddressOfEntryPoint */ > .long _start - ImageBase /* BaseOfCode */ > -- > 2.47.1 >
Reviewed-by: Ilias Apalodimas <[email protected]>

