Makefile: Don't mess with .text section location for selected arches
authorAlexey Brodkin <>
Wed, 21 Feb 2018 10:06:26 +0000 (13:06 +0300)
committerTom Rini <>
Fri, 23 Feb 2018 15:40:51 +0000 (10:40 -0500)
Most of architectures have .text section situated in the very beginning
of U-Boot binary and thus it is very logical that CONFIG_SYS_TEXT_BASE
is used on final linkage step to specify where U-Boot gets linked to.

For that we pass the following construction to the LD:
xxx-ld ...  -Ttext $(CONFIG_SYS_TEXT_BASE) ...

But there could be exceptions. For example:
 1. In case of ARCv2 we want to put vectors table in its own section
    .ivt in front of .text section which means we need either add an
    offset to CONFIG_SYS_TEXT_BASE to compensate for .ivt or don't
    pass "-Ttext" to the LD at all and specify link base in linker
    script directly.

 2. Some architectures even though have .text section in the very
    beginning of the U-Boot image still use different symbols to
    specify link-base:
       * NIOS2: CONFIG_SYS_MONITOR_BASE (which I really like because
         that exactly what makes sense - where out image starts but not
         beginning of its .text section which just happened to match the
         whole image beginning)
       * X86: Which doesn't use CONFIG_SYS_MONITOR_BASE in case of EFI
         otherwise sets explicit link base in

I think that's good to allow for flexibility and don't require each and
every architecture or even platform to specify CONFIG_SYS_TEXT_BASE as well
as use it to set .text section location.

So let's only pass "-Ttext xxx" for those architectures who don't set
link-base explicitly in their linker scripts.

This patch iaddresses comments for previously sent

Signed-off-by: Alexey Brodkin <>
Cc: Masahiro Yamada <>
Cc: Marek Vasut <>
Cc: Max Filippov <>
Cc: Simon Glass <>
Cc: Tom Rini <>

index cd265f5..57cb4b8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -820,7 +820,7 @@ 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)