[PATCH 4/6] arm: clean up v7 and v8 linker scripts for __rel_dyn_start/end
Sam Edwards
cfsworks at gmail.com
Wed Mar 6 08:35:59 CET 2024
On 3/4/24 02:01, Ilias Apalodimas wrote:
> commit 47bd65ef057f ("arm: make __rel_dyn_{start, end} compiler-generated")
> were moving the __rel_dyn_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.
>
> 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 [0].
> This have been fixed since 2016 [1]
>
> [0] https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html#SEC13
> [1] commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Reviewed-by: Sam Edwards <CFSworks at gmail.com>
Tested-by: Sam Edwards <CFSworks at gmail.com> # Binary output identical
Thanks for the cleanup,
Sam
> ---
> arch/arm/cpu/armv8/u-boot.lds | 16 +++-------------
> arch/arm/cpu/u-boot.lds | 14 +++-----------
> arch/arm/lib/sections.c | 2 --
> arch/arm/mach-zynq/u-boot.lds | 14 +++-----------
> 4 files changed, 9 insertions(+), 37 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/u-boot.lds b/arch/arm/cpu/armv8/u-boot.lds
> index eccb116d3cfa..e737de761a9d 100644
> --- a/arch/arm/cpu/armv8/u-boot.lds
> +++ b/arch/arm/cpu/armv8/u-boot.lds
> @@ -129,20 +129,10 @@ SECTIONS
> *(.__image_copy_end)
> }
>
> - . = ALIGN(8);
> -
> - .rel_dyn_start :
> - {
> - *(.__rel_dyn_start)
> - }
> -
> - .rela.dyn : {
> + .rela.dyn ALIGN(8) : {
> + __rel_dyn_start = .;
> *(.rela*)
> - }
> -
> - .rel_dyn_end :
> - {
> - *(.__rel_dyn_end)
> + __rel_dyn_end = .;
> }
>
> _end = .;
> diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> index 70e78ce46672..7c6e7891d360 100644
> --- a/arch/arm/cpu/u-boot.lds
> +++ b/arch/arm/cpu/u-boot.lds
> @@ -166,18 +166,10 @@ SECTIONS
> *(.__image_copy_end)
> }
>
> - .rel_dyn_start :
> - {
> - *(.__rel_dyn_start)
> - }
> -
> - .rel.dyn : {
> + .rel.dyn ALIGN(4) : {
> + __rel_dyn_start = .;
> *(.rel*)
> - }
> -
> - .rel_dyn_end :
> - {
> - *(.__rel_dyn_end)
> + __rel_dyn_end = .;
> }
>
> .end :
> diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c
> index ddfde52163fc..1ee3dd3667ba 100644
> --- a/arch/arm/lib/sections.c
> +++ b/arch/arm/lib/sections.c
> @@ -21,8 +21,6 @@
>
> char __image_copy_start[0] __section(".__image_copy_start");
> char __image_copy_end[0] __section(".__image_copy_end");
> -char __rel_dyn_start[0] __section(".__rel_dyn_start");
> -char __rel_dyn_end[0] __section(".__rel_dyn_end");
> char __secure_start[0] __section(".__secure_start");
> char __secure_end[0] __section(".__secure_end");
> char __secure_stack_start[0] __section(".__secure_stack_start");
> diff --git a/arch/arm/mach-zynq/u-boot.lds b/arch/arm/mach-zynq/u-boot.lds
> index 66a9e37f9198..71dea4a1f60a 100644
> --- a/arch/arm/mach-zynq/u-boot.lds
> +++ b/arch/arm/mach-zynq/u-boot.lds
> @@ -71,18 +71,10 @@ SECTIONS
> *(.__image_copy_end)
> }
>
> - .rel_dyn_start :
> - {
> - *(.__rel_dyn_start)
> - }
> -
> - .rel.dyn : {
> + .rel.dyn ALIGN(8) : {
> + __rel_dyn_start = .;
> *(.rel*)
> - }
> -
> - .rel_dyn_end :
> - {
> - *(.__rel_dyn_end)
> + __rel_dyn_end = .;
> }
>
> .end :
More information about the U-Boot
mailing list