On 3/14/24 20:43, Ilias Apalodimas wrote:
commit 3ebd1cbc49f0 ("arm: make __bss_start and __bss_end__ compiler-generated")
and
commit f84a7b8f54db ("ARM: Fix __bss_start and __bss_end in linker scripts")
were moving the bss_start/end on c generated variables that were
injected in their own sections. The reason was that we needed relative
relocations for position independent code and linker bugs back then
prevented us from doing so [0].

However, the linker documentation pages states that symbols that are
defined within a section definition will create a relocatable type with
the value being a fixed offset from the base of a section [1].
So let's start cleaning this up starting with the bss_start and bss_end
variables. Convert them into symbols within the .bss section definition.

[0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for 
shared object")
[1]https://sourceware.org/binutils/docs/ld/Expression-Section.html

Tested-by: Caleb Connolly<caleb.conno...@linaro.org>  # Qualcomm sdm845
Tested-by: Sam Edwards<cfswo...@gmail.com>  # Binary output identical
Signed-off-by: Ilias Apalodimas<ilias.apalodi...@linaro.org>
---
  arch/arm/cpu/armv8/u-boot-spl.lds        | 18 +++++++-----------
  arch/arm/cpu/armv8/u-boot.lds            | 16 ++++------------
  arch/arm/cpu/u-boot.lds                  | 22 +++++++---------------
  arch/arm/lib/sections.c                  |  2 --
  arch/arm/mach-rockchip/u-boot-tpl-v8.lds | 15 ++++-----------
  arch/arm/mach-zynq/u-boot.lds            | 22 +++++++---------------
  6 files changed, 29 insertions(+), 66 deletions(-)

Reviewed-by: Richard Henderson <richard.hender...@linaro.org>

r~

Reply via email to