arm: move image_copy_start/end to linker symbols
image_copy_start/end are defined as c variables in order to force the compiler
emit relative references. However, defining those within a section definition
will do the same thing since [0].
So let's remove the special sections from the linker scripts, the
variable definitions from sections.c and define them as a symbols within
a section.
[0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")
Suggested-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>
diff --git a/arch/arm/cpu/armv8/u-boot.lds b/arch/arm/cpu/armv8/u-boot.lds
index 5ba54dc..147a6e8 100644
--- a/arch/arm/cpu/armv8/u-boot.lds
+++ b/arch/arm/cpu/armv8/u-boot.lds
@@ -21,9 +21,9 @@
. = 0x00000000;
. = ALIGN(8);
+ __image_copy_start = ADDR(.text);
.text :
{
- *(.__image_copy_start)
CPUDIR/start.o (.text*)
}
@@ -123,11 +123,7 @@
}
. = ALIGN(8);
-
- .image_copy_end :
- {
- *(.__image_copy_end)
- }
+ __image_copy_end = .;
.rela.dyn ALIGN(8) : {
__rel_dyn_start = .;