]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm: fix __efi_runtime_start/end definitions
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Fri, 15 Mar 2024 06:43:49 +0000 (08:43 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 29 Mar 2024 14:39:25 +0000 (10:39 -0400)
__efi_runtime_start/end are defined as c variables for arm7 only in
order to force the compiler emit relative references. However, defining
those within a section definition will do the same thing since [0].
On top of that the v8 linker scripts define it as a symbol.

So let's remove the special sections from the linker scripts, the
variable definitions from sections.c and define them as a symbols within
the correct section.

[0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")

Suggested-by: Sam Edwards <CFSworks@gmail.com>
Reviewed-by: Sam Edwards <CFSworks@gmail.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Sam Edwards <CFSworks@gmail.com> # Binary output identical
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
arch/arm/cpu/u-boot.lds
arch/arm/lib/sections.c
arch/arm/mach-zynq/u-boot.lds
include/asm-generic/sections.h

index 0682d34207fad4cc2925d77450add02d8a78d9a1..6813d8aeb8382e2fc79d568bc5daaabc9a25d14a 100644 (file)
@@ -43,18 +43,12 @@ SECTIONS
        }
 
        /* This needs to come before *(.text*) */
-       .__efi_runtime_start : {
-               *(.__efi_runtime_start)
-       }
-
-       .efi_runtime : {
+       .efi_runtime ALIGN(4) : {
+               __efi_runtime_start = .;
                *(.text.efi_runtime*)
                *(.rodata.efi_runtime*)
                *(.data.efi_runtime*)
-       }
-
-       .__efi_runtime_stop : {
-               *(.__efi_runtime_stop)
+               __efi_runtime_stop = .;
        }
 
        .text_rest :
index 1ee3dd3667bab89f8c6666d78fd5a3331b730032..a4d4202e99f57b744fef884ebfe2576488a4bb8d 100644 (file)
@@ -25,6 +25,4 @@ char __secure_start[0] __section(".__secure_start");
 char __secure_end[0] __section(".__secure_end");
 char __secure_stack_start[0] __section(".__secure_stack_start");
 char __secure_stack_end[0] __section(".__secure_stack_end");
-char __efi_runtime_start[0] __section(".__efi_runtime_start");
-char __efi_runtime_stop[0] __section(".__efi_runtime_stop");
 char _end[0] __section(".__end");
index 3b1f0d349356b3de17c4f9220e83c6b5a89e6028..9eac7de0dcbd0d014cb1109f018ca4bc9e6b6f96 100644 (file)
@@ -22,18 +22,12 @@ SECTIONS
        }
 
        /* This needs to come before *(.text*) */
-       .__efi_runtime_start : {
-               *(.__efi_runtime_start)
-       }
-
-       .efi_runtime : {
+       .efi_runtime ALIGN(4) : {
+               __efi_runtime_start = .;
                *(.text.efi_runtime*)
                *(.rodata.efi_runtime*)
                *(.data.efi_runtime*)
-       }
-
-       .__efi_runtime_stop : {
-               *(.__efi_runtime_stop)
+               __efi_runtime_stop = .;
        }
 
        .text_rest :
index 60949200dd93a224f8eca5be21a89826e5efd92e..b6bca53db10d34a2b9b377b9ff2ec310b13cca1f 100644 (file)
@@ -35,6 +35,7 @@ extern char __priv_data_start[], __priv_data_end[];
 extern char __ctors_start[], __ctors_end[];
 
 extern char __efi_runtime_rel_start[], __efi_runtime_rel_stop[];
+extern char __efi_runtime_start[], __efi_runtime_stop[];
 
 /* function descriptor handling (if any).  Override
  * in asm/sections.h */