[U-Boot] [PATCH 2/4] arm: make __image_copy_{start, end} compiler-generated

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Sat May 11 02:25:02 CEST 2013


Hi Albert,

On Friday, May 10, 2013 11:56:50 PM, Albert ARIBAUD wrote:
> Signed-off-by: Albert ARIBAUD <albert.u.boot at aribaud.net>
> ---
>  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


More information about the U-Boot mailing list