From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Beno=C3=AEt_Th=C3=A9baudeau?= Date: Sat, 11 May 2013 02:25:02 +0200 (CEST) Subject: [U-Boot] [PATCH 2/4] arm: make __image_copy_{start, end} compiler-generated In-Reply-To: <1368223012-17609-3-git-send-email-albert.u.boot@aribaud.net> References: <1368223012-17609-1-git-send-email-albert.u.boot@aribaud.net> <1368223012-17609-2-git-send-email-albert.u.boot@aribaud.net> <1368223012-17609-3-git-send-email-albert.u.boot@aribaud.net> Message-ID: <794454861.738554.1368231902880.JavaMail.root@advansee.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Albert, On Friday, May 10, 2013 11:56:50 PM, Albert ARIBAUD wrote: > Signed-off-by: Albert ARIBAUD > --- > arch/arm/cpu/arm1136/start.S | 7 +++---- > arch/arm/cpu/arm1136/u-boot-spl.lds | 3 ++- > arch/arm/cpu/arm720t/start.S | 11 +++++++---- > arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 6 +++++- > arch/arm/cpu/arm926ejs/start.S | 7 +++---- > arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 2 -- > arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 2 -- > arch/arm/cpu/armv7/socfpga/u-boot-spl.lds | 1 - > arch/arm/cpu/armv7/start.S | 6 ++---- > arch/arm/cpu/ixp/u-boot.lds | 6 +++++- > arch/arm/cpu/u-boot-spl.lds | 3 +-- > arch/arm/cpu/u-boot.lds | 7 +++++-- > arch/arm/lib/sections.c | 4 +++- > 13 files changed, 36 insertions(+), 29 deletions(-) > > diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S > index ccea2d5..ab8fd56 100644 > --- a/arch/arm/cpu/arm1136/start.S > +++ b/arch/arm/cpu/arm1136/start.S > @@ -104,10 +104,6 @@ _TEXT_BASE: > _bss_start_ofs: > .word __bss_start - _start > > -.globl _image_copy_end_ofs Wasn't _image_copy_end_ofs used outside of start.S? Same question for all the start.S files. > -_image_copy_end_ofs: > - .word __image_copy_end - _start > - > .globl _bss_end_ofs > _bss_end_ofs: > .word __bss_end - _start > @@ -239,6 +235,9 @@ relocate_done: > > bx lr > > +_image_copy_end_ofs: > + .word __image_copy_end - _start > + > #ifndef CONFIG_SPL_BUILD > > _rel_dyn_start_ofs: > diff --git a/arch/arm/cpu/arm1136/u-boot-spl.lds > b/arch/arm/cpu/arm1136/u-boot-spl.lds > index 8296e5d..04fc881 100644 > --- a/arch/arm/cpu/arm1136/u-boot-spl.lds > +++ b/arch/arm/cpu/arm1136/u-boot-spl.lds > @@ -37,7 +37,6 @@ SECTIONS > { > .text : > { > - __start = .; > arch/arm/cpu/arm1136/start.o (.text*) > *(.text*) > } >.sram > @@ -48,7 +47,9 @@ SECTIONS > . = ALIGN(4); > .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram > . = ALIGN(4); > + > __image_copy_end = .; Why aren't all linker scripts treated equally? Here, start.S is still used, so '*(.__image_copy_end)' and the related stuff should be like what you did for arch/arm/cpu/u-boot.lds below. Or am I missing something? Same question for several other linker scripts below. > + > _end = .; > > .bss : [...] > diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds > index d9bbee3..5b43621 100644 > --- a/arch/arm/cpu/u-boot.lds > +++ b/arch/arm/cpu/u-boot.lds > @@ -33,7 +33,7 @@ SECTIONS > . = ALIGN(4); > .text : > { > - __image_copy_start = .; > + *(.__image_copy_start) Are there any users of __image_copy_start? > CPUDIR/start.o (.text*) > *(.text*) > } > @@ -57,7 +57,10 @@ SECTIONS > > . = ALIGN(4); > > - __image_copy_end = .; > + .image_copy_end : > + { > + *(.__image_copy_end); > + } > > .rel.dyn : { > __rel_dyn_start = .; > diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c > index 99eda59..80a0c38 100644 > --- a/arch/arm/lib/sections.c > +++ b/arch/arm/lib/sections.c > @@ -21,7 +21,7 @@ > */ > > /** > - * These two symbols are declared in a C file so that the linker > + * The following symbols are declared in a C file so that the linker > * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one > * it would use if the symbols were defined in the linker file. > * Using only R_ARM_RELATIVE relocation ensures that references to > @@ -37,3 +37,5 @@ > > char __bss_start[0] __attribute__((used, section(".__bss_start"))); > char __bss_end[0] __attribute__((used, section(".__bss_end"))); > +char __image_copy_start[0] __attribute__((used, > section(".__image_copy_start"))); Ditto. > +char __image_copy_end[0] __attribute__((used, > section(".__image_copy_end"))); Best regards, Beno?t