From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 32926C4708E for ; Wed, 4 Jan 2023 10:08:42 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7A97380FC4; Wed, 4 Jan 2023 11:08:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="E71XTYTo"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3123C84231; Wed, 4 Jan 2023 11:08:38 +0100 (CET) Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7CA8380EAF for ; Wed, 4 Jan 2023 11:08:35 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org Received: by mail-ed1-x531.google.com with SMTP id c17so47794711edj.13 for ; Wed, 04 Jan 2023 02:08:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ka3xG/i+S/A4MBrjK3kWqPWSLxrc7M5cTcTDadISZhc=; b=E71XTYTof2gbgftHJ3ncCrIyyXZUBeKtC5j/JTOiJhoD54dN5R62KJjQ6nUsrzHBYM dLZbMVX+vVUHAHicQmwOcdrYpiU81kvXOIiA2xeAb6HWuY23zgFBNalLf3j1amTCF49T yhub7rUFqglbyrH2tf/jUMK6BV1J3kfLezk0E2za+tGOQF1s3AgyANsusM/wRGHrZuj7 WY9um5D5ctSOHHhb45rYmpw9iehQqvmVydd8uboJfxwgRDeRTR5Bm0gZbwR/HQUV8iyV jtsoOFpS47dgfTO0JqSD37eDnBXqZLCwTWyxDxwXyNqIHNAexg7rFeRU0IIj+bwOu2b0 vcyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ka3xG/i+S/A4MBrjK3kWqPWSLxrc7M5cTcTDadISZhc=; b=NLkGpfXjPW+Rn7bKtuqaJIDudovwdl8UqOWKcZ0pPqwecjVKc4oWz0E5ONNEOMtLoM 2OjQFo13nl5tlM+j5Shkmh29TDVXht/PQMyWK3QHXfy7FrfWxnp0YhBcpaaKIvdiF5y7 8m9xyTH2njNpz560UrzXmgm1w0UjEPcHnnCZqmpzuGNOpZZiXP6noSRP5hk28JS0Eaz0 WK8H9/LfTver2JuyoO3x5VfQhQ6si343TXkokgmqWVM/zNks2DQBB9dS3YuvllXkM1AD cPOVzlqItbJurhOuZunyjmZPDiSDBOHkHCafIm4ieC6vxS8UEqcJ44V2CB2d56tHqCOR KS9A== X-Gm-Message-State: AFqh2kqbxWtFN3xHKPK8/H3i0PB3mTOrlP5Bm1wmXBrMFBjKxpxj5IaY VDzSDb+sZR9kD1yL44CJykmmgSfPboCPw6jH X-Google-Smtp-Source: AMrXdXvuUZeM9rBWRG4rQkuiSzGWX5hj7ktpOc41ji5oDziNDFrmAMlhx2deR/dk4D7zoOwLl12jpg== X-Received: by 2002:aa7:d719:0:b0:474:a35b:6c17 with SMTP id t25-20020aa7d719000000b00474a35b6c17mr42208300edq.4.1672826915152; Wed, 04 Jan 2023 02:08:35 -0800 (PST) Received: from hades (ppp079167090036.access.hol.gr. [79.167.90.36]) by smtp.gmail.com with ESMTPSA id a22-20020a17090640d600b00815835b4b5fsm15045270ejk.134.2023.01.04.02.08.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Jan 2023 02:08:34 -0800 (PST) Date: Wed, 4 Jan 2023 12:08:32 +0200 From: Ilias Apalodimas To: Heinrich Schuchardt Cc: u-boot@lists.denx.de Subject: Re: [PATCH 1/1] efi_loader: fix building aarch64 EFI binaries Message-ID: References: <20221231110345.72250-1-heinrich.schuchardt@canonical.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221231110345.72250-1-heinrich.schuchardt@canonical.com> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Hi Heinrich On Sat, Dec 31, 2022 at 12:03:45PM +0100, Heinrich Schuchardt wrote: > While our EFI binaries execute without problems on EDK II they crash on > a Lenovo X13s. Let our binaries look more like what EDK II produces: > > * move all writable data to a .data section > * align sections to 4 KiB boundaries (matching EFI page size) > > Signed-off-by: Heinrich Schuchardt > --- > arch/arm/lib/crt0_aarch64_efi.S | 35 ++++++++++++++++++++++---------- > arch/arm/lib/elf_aarch64_efi.lds | 6 ++++-- > 2 files changed, 28 insertions(+), 13 deletions(-) > > diff --git a/arch/arm/lib/crt0_aarch64_efi.S b/arch/arm/lib/crt0_aarch64_efi.S > index b4fc263adf..52b2482efe 100644 > --- a/arch/arm/lib/crt0_aarch64_efi.S > +++ b/arch/arm/lib/crt0_aarch64_efi.S > @@ -25,7 +25,7 @@ pe_header: > .long IMAGE_NT_SIGNATURE /* 'PE' */ > coff_header: > .short IMAGE_FILE_MACHINE_ARM64 /* AArch64 */ > - .short 2 /* nr_sections */ > + .short 3 /* nr_sections */ > .long 0 /* TimeDateStamp */ > .long 0 /* PointerToSymbolTable */ > .long 0 /* NumberOfSymbols */ > @@ -40,7 +40,7 @@ optional_header: > .short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */ > .byte 0x02 /* MajorLinkerVersion */ > .byte 0x14 /* MinorLinkerVersion */ > - .long _edata - _start /* SizeOfCode */ > + .long _etext - _start /* SizeOfCode */ > .long 0 /* SizeOfInitializedData */ > .long 0 /* SizeOfUninitializedData */ > .long _start - ImageBase /* AddressOfEntryPoint */ > @@ -48,7 +48,7 @@ optional_header: > > extra_header_fields: > .quad 0 /* ImageBase */ > - .long 0x200 /* SectionAlignment */ > + .long 0x1000 /* SectionAlignment */ > .long 0x200 /* FileAlignment */ > .short 0 /* MajorOperatingSystemVersion */ > .short 0 /* MinorOperatingSystemVersion */ > @@ -107,18 +107,31 @@ section_table: > .byte 0 > .byte 0 > .byte 0 /* end of 0 padding of section name */ > - .long _edata - _start /* VirtualSize */ > + .long _etext - _start /* VirtualSize */ > .long _start - ImageBase /* VirtualAddress */ > - .long _edata - _start /* SizeOfRawData */ > + .long _etext - _start /* SizeOfRawData */ > .long _start - ImageBase /* PointerToRawData */ > + .long 0 /* PointerToRelocations */ > + .long 0 /* PointerToLineNumbers */ > + .short 0 /* NumberOfRelocations */ > + .short 0 /* NumberOfLineNumbers */ > + .long 0x60000020 /* Characteristics (section flags) */ Can we replace the 0x60000020 magic here with defines from include/asm-generic/pe.h? > > - .long 0 /* PointerToRelocations (0 for executables) */ > - .long 0 /* PointerToLineNumbers (0 for executables) */ > - .short 0 /* NumberOfRelocations (0 for executables) */ > - .short 0 /* NumberOfLineNumbers (0 for executables) */ > - .long 0xe0500020 /* Characteristics (section flags) */ > + .ascii ".data" > + .byte 0 > + .byte 0 > + .byte 0 /* end of 0 padding of section name */ > + .long _data_size /* VirtualSize */ > + .long _data - ImageBase /* VirtualAddress */ > + .long _data_size /* SizeOfRawData */ > + .long _data - ImageBase /* PointerToRawData */ > + .long 0 /* PointerToRelocations */ > + .long 0 /* PointerToLineNumbers */ > + .short 0 /* NumberOfRelocations */ > + .short 0 /* NumberOfLineNumbers */ > + .long 0xc0000040 /* Characteristics (section flags) */ Same here > > - .align 9 > + .align 12 > _start: > stp x29, x30, [sp, #-32]! > mov x29, sp > diff --git a/arch/arm/lib/elf_aarch64_efi.lds b/arch/arm/lib/elf_aarch64_efi.lds > index c0604dad46..ffc6f6e604 100644 > --- a/arch/arm/lib/elf_aarch64_efi.lds > +++ b/arch/arm/lib/elf_aarch64_efi.lds > @@ -18,11 +18,13 @@ SECTIONS > *(.gnu.linkonce.t.*) > *(.srodata) > *(.rodata*) > + . = ALIGN(16); > + *(.dynamic); > . = ALIGN(512); > } > _etext = .; > _text_size = . - _text; > - .dynamic : { *(.dynamic) } > + . = ALIGN(4096); > .data : { > _data = .; > *(.sdata) > @@ -48,11 +50,11 @@ SECTIONS > _bss_end = .; > _edata = .; > } > + _data_size = _edata - _data; > .rela.dyn : { *(.rela.dyn) } > .rela.plt : { *(.rela.plt) } > .rela.got : { *(.rela.got) } > .rela.data : { *(.rela.data) *(.rela.data*) } > - _data_size = . - _etext; > > . = ALIGN(4096); > .dynsym : { *(.dynsym) } > -- > 2.37.2 > Regards /Ilias