Subrata Banik has uploaded this change for review. ( 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 `PROGRAM_SZ_EXTRA_SPACE` 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 --- M src/arch/x86/Kconfig M src/arch/x86/bootblock.ld 2 files changed, 12 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/86/81886/1
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index d2ae320..2f64f21 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 PROGRAM_SZ_EXTRA_SPACE + hex + 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..ce70f58 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_PROGRAM_SZ_EXTRA_SPACE;
. = MIN(_ECFW_PTR, MIN(_ID_SECTION, _FIT_POINTER)) - EARLYASM_SZ; . = CONFIG(SIPI_VECTOR_IN_ROM) ? ALIGN(4096) : ALIGN(16);