]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm: remove redundant section alignments
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Fri, 15 Mar 2024 06:43:51 +0000 (08:43 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 29 Mar 2024 14:39:25 +0000 (10:39 -0400)
Previous patches cleaning up linker symbols, also merged any explicit
. = ALIGN(x); into section definitions -- e.g
.bss ALIGN(x) : instead of

. = ALIGN(x);
. bss : {...}

However, if the output address is not specified then one will be chosen
for the section. This address will be adjusted to fit the alignment
requirement of the output section following the strictest alignment of
any input section contained within the output section. So let's get rid
of the redundant ALIGN directives when they are not needed.

While at add comments for the alignment of __bss_start/end since our
C runtime setup assembly assumes that __bss_start - __bss_end will be
a multiple of 4/8 for armv7 and armv8 respectively.

It's worth noting that the alignment is preserved on .rel.dyn for
mach-zynq which was explicitly aligning that section on an 8b
boundary instead of 4b one.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
arch/arm/cpu/armv8/u-boot.lds
arch/arm/cpu/u-boot.lds
arch/arm/mach-zynq/u-boot.lds

index 147a6e8028d5c71279569d1e49bda722f7288173..857f44412e0767368c98ccdf32f828b196008dd3 100644 (file)
@@ -115,7 +115,7 @@ SECTIONS
                KEEP(*(SORT(__u_boot_list*)));
        }
 
-       .efi_runtime_rel ALIGN(8) : {
+       .efi_runtime_rel : {
                 __efi_runtime_rel_start = .;
                *(.rel*.efi_runtime)
                *(.rel*.efi_runtime.*)
@@ -125,7 +125,7 @@ SECTIONS
        . = ALIGN(8);
        __image_copy_end = .;
 
-       .rela.dyn ALIGN(8) : {
+       .rela.dyn : {
                __rel_dyn_start = .;
                *(.rela*)
                __rel_dyn_end = .;
@@ -133,7 +133,10 @@ SECTIONS
 
        _end = .;
 
-       .bss ALIGN(8): {
+       /*
+        * arch/arm/lib/crt0_64.S assumes __bss_start - __bss_end % 8 == 0
+        */
+       .bss ALIGN(8) : {
                __bss_start = .;
                *(.bss*)
                . = ALIGN(8);
index 798858e3ed6e10a97969a91392e295d817564cc9..707b19795f08594c420e9544eb9e75bf4c02b44c 100644 (file)
@@ -43,7 +43,7 @@ SECTIONS
        }
 
        /* This needs to come before *(.text*) */
-       .efi_runtime ALIGN(4) : {
+       .efi_runtime : {
                __efi_runtime_start = .;
                *(.text.efi_runtime*)
                *(.rodata.efi_runtime*)
@@ -146,7 +146,7 @@ SECTIONS
                KEEP(*(SORT(__u_boot_list*)));
        }
 
-       .efi_runtime_rel ALIGN(4) : {
+       .efi_runtime_rel : {
                __efi_runtime_rel_start = .;
                *(.rel*.efi_runtime)
                *(.rel*.efi_runtime.*)
@@ -156,6 +156,10 @@ SECTIONS
        . = ALIGN(4);
        __image_copy_end = .;
 
+       /*
+        * if CONFIG_USE_ARCH_MEMSET is not selected __bss_end - __bss_start
+        * needs to be a multiple of 4 and we overlay .bss with .rel.dyn
+        */
        .rel.dyn ALIGN(4) : {
                __rel_dyn_start = .;
                *(.rel*)
index f6c99a8ce2186968d0e60770b8da93fa5907563f..3e0c96c5055616e44c9511d496ae1bd2f61a6593 100644 (file)
@@ -22,7 +22,7 @@ SECTIONS
        }
 
        /* This needs to come before *(.text*) */
-       .efi_runtime ALIGN(4) : {
+       .efi_runtime : {
                __efi_runtime_start = .;
                *(.text.efi_runtime*)
                *(.rodata.efi_runtime*)
@@ -52,7 +52,7 @@ SECTIONS
                KEEP(*(SORT(__u_boot_list*)));
        }
 
-       .efi_runtime_rel ALIGN(4) : {
+       .efi_runtime_rel : {
                __efi_runtime_rel_start = .;
                *(.rel*.efi_runtime)
                *(.rel*.efi_runtime.*)