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>
This commit is contained in:
Ilias Apalodimas 2024-03-15 08:43:50 +02:00 committed by Tom Rini
parent c0802104d6
commit 4ee32ea0c4
9 changed files with 15 additions and 32 deletions

View File

@ -21,9 +21,9 @@ OUTPUT_ARCH(aarch64)
ENTRY(_start)
SECTIONS
{
__image_copy_start = ADDR(.text);
.text : {
. = ALIGN(8);
__image_copy_start = .;
CPUDIR/start.o (.text*)
*(.text*)
} >.sram
@ -51,10 +51,8 @@ SECTIONS
KEEP(*(SORT(__u_boot_list*)));
} >.sram
.image_copy_end : {
. = ALIGN(8);
*(.__image_copy_end)
} >.sram
. = ALIGN(8);
__image_copy_end = .;
.end : {
. = ALIGN(8);

View File

@ -21,9 +21,9 @@ SECTIONS
. = 0x00000000;
. = ALIGN(8);
__image_copy_start = ADDR(.text);
.text :
{
*(.__image_copy_start)
CPUDIR/start.o (.text*)
}
@ -123,11 +123,7 @@ SECTIONS
}
. = ALIGN(8);
.image_copy_end :
{
*(.__image_copy_end)
}
__image_copy_end = .;
.rela.dyn ALIGN(8) : {
__rel_dyn_start = .;

View File

@ -14,9 +14,9 @@ SECTIONS
. = 0x00000000;
. = ALIGN(4);
__image_copy_start = ADDR(.text);
.text :
{
__image_copy_start = .;
*(.vectors)
CPUDIR/start.o (.text*)
*(.text*)

View File

@ -35,9 +35,9 @@ SECTIONS
. = 0x00000000;
. = ALIGN(4);
__image_copy_start = ADDR(.text);
.text :
{
*(.__image_copy_start)
*(.vectors)
CPUDIR/start.o (.text*)
}
@ -154,11 +154,7 @@ SECTIONS
}
. = ALIGN(4);
.image_copy_end :
{
*(.__image_copy_end)
}
__image_copy_end = .;
.rel.dyn ALIGN(4) : {
__rel_dyn_start = .;

View File

@ -19,8 +19,6 @@
* aliasing warnings.
*/
char __image_copy_start[0] __section(".__image_copy_start");
char __image_copy_end[0] __section(".__image_copy_end");
char __secure_start[0] __section(".__secure_start");
char __secure_end[0] __section(".__secure_end");
char __secure_stack_start[0] __section(".__secure_stack_start");

View File

@ -22,9 +22,9 @@ SECTIONS
. = 0x00000000;
. = ALIGN(4);
__image_copy_start = ADDR(.text);
.text :
{
__image_copy_start = .;
*(.vectors)
CPUDIR/start.o (.text*)
*(.text*)

View File

@ -22,9 +22,9 @@ SECTIONS
{
. = 0x00000000;
__image_copy_start = ADDR(.text);
.text : {
. = ALIGN(8);
*(.__image_copy_start)
CPUDIR/start.o (.text*)
*(.text*)
}
@ -44,10 +44,8 @@ SECTIONS
KEEP(*(SORT(__u_boot_list*)));
}
.image_copy_end : {
. = ALIGN(8);
*(.__image_copy_end)
}
. = ALIGN(8);
__image_copy_end = .;
.end : {
. = ALIGN(8);

View File

@ -18,9 +18,9 @@ ENTRY(_start)
SECTIONS
{
. = ALIGN(4);
__image_copy_start = ADDR(.text);
.text :
{
__image_copy_start = .;
*(.vectors)
CPUDIR/start.o (.text*)
*(.text*)

View File

@ -14,9 +14,9 @@ SECTIONS
. = 0x00000000;
. = ALIGN(4);
__image_copy_start = ADDR(.text);
.text :
{
*(.__image_copy_start)
*(.vectors)
CPUDIR/start.o (.text*)
}
@ -60,10 +60,7 @@ SECTIONS
}
. = ALIGN(8);
.image_copy_end :
{
*(.__image_copy_end)
}
__image_copy_end = .;
.rel.dyn ALIGN(8) : {
__rel_dyn_start = .;