[PATCH u-boot v3 18/39] build: link with --build-id=none

Marek Behún
2021-03-16T12:25:48Z

Some toolchains are compiled so that they pass a --build-id=something
parameter to the linker implicitly.

This causes U-Boot LTO linking to fail with something like:
ld: section .note.gnu.build-id LMA ... overlaps section .text LMA ...
because U-Boot's link scripts do not currently handle .note.gnu.build-id
section.

Fix this by explicitly disabling build-id.

Signed-off-by: Marek Beh?n <marek.behun@nic.cz>
---
Makefile | 2 ++
scripts/Makefile.spl | 2 ++
2 files changed, 4 insertions(+)

diff --git a/Makefile b/Makefile
index 952c165d8f..d806155ede 100644
--- a/Makefile
+++ b/Makefile
@@ -989,6 +989,8 @@ LDFLAGS_u-boot += $(LDFLAGS_FINAL)
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)

+LDFLAGS_u-boot += --build-id=none
+
ifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),)
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
endif
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 9c9d59635d..36a3de815a 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -375,6 +375,8 @@ LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
LDFLAGS_$(SPL_BIN) += $(call ld-option, --no-dynamic-linker)

+LDFLAGS_$(SPL_BIN) += --build-id=none
+
# Pick the best-match (i.e. SPL_TEXT_BASE for SPL, TPL_TEXT_BASE for TPL)
ifneq ($(CONFIG_$(SPL_TPL_)TEXT_BASE),)
LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_$(SPL_TPL_)TEXT_BASE)
--
2.26.2