Subrata Banik has submitted this change. ( https://review.coreboot.org/c/coreboot/+/81886?usp=email )
Change subject: arch/x86: Prevent .text/.init overlap with older linkers ......................................................................
arch/x86: Prevent .text/.init overlap with older linkers
Add Kconfig option `X86_BOOTBLOCK_EXTRA_PROGRAM_SZ` to reserve extra space, avoiding overlap between .text and .init sections when using older linkers (binutils 2.3x). Default is 1024 bytes (1 KiB) for ChromeOS, 0 otherwise.
BUG=b:332445618 TEST=Built and booted google/rex (32-bit/64-bit).
Change-Id: I019bf6896d84b2a84dff6f22323f0f446c0740b5 Signed-off-by: Subrata Banik subratabanik@google.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/81886 Reviewed-by: Dinesh Gehlot digehlot@google.com Reviewed-by: Kapil Porwal kapilporwal@google.com Reviewed-by: Eric Lai ericllai@google.com Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Angel Pons th3fanbus@gmail.com --- M src/arch/x86/Kconfig M src/arch/x86/bootblock.ld 2 files changed, 12 insertions(+), 1 deletion(-)
Approvals: Eric Lai: Looks good to me, approved Angel Pons: Looks good to me, approved Kapil Porwal: Looks good to me, approved build bot (Jenkins): Verified Dinesh Gehlot: Looks good to me, approved
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index d2ae320..7d25561 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -412,4 +412,15 @@ If not set, both CPU and SoC physical address width are assume to be the same.
+config X86_BOOTBLOCK_EXTRA_PROGRAM_SZ + int + default 1024 if CHROMEOS + default 0 + help + Add extra space to prevent overlap between .text and .init sections. + This is necessary for older linkers (pre-binutils 2.4x) like those used + on ChromeOS platforms. + + The default value is 1024 bytes (1 KiB) for ChromeOS and 0 for other platforms. + endif diff --git a/src/arch/x86/bootblock.ld b/src/arch/x86/bootblock.ld index 73a3d18..1f44d6a 100644 --- a/src/arch/x86/bootblock.ld +++ b/src/arch/x86/bootblock.ld @@ -26,7 +26,7 @@
INCLUDE "bootblock/lib/program.ld"
- PROGRAM_SZ = SIZEOF(.text) + SIZEOF(.data); + PROGRAM_SZ = SIZEOF(.text) + SIZEOF(.data) + CONFIG_X86_BOOTBLOCK_EXTRA_PROGRAM_SZ;
. = MIN(_ECFW_PTR, MIN(_ID_SECTION, _FIT_POINTER)) - EARLYASM_SZ; . = CONFIG(SIPI_VECTOR_IN_ROM) ? ALIGN(4096) : ALIGN(16);