Patchwork [U-Boot,V2,1/5] ARM: fix u-boot.lds for -ffunction-sections/-fdata-sections

login
register
mail settings
Submitter Stephen Warren
Date Oct. 18, 2012, 11:25 p.m.
Message ID <1350602759-22605-1-git-send-email-swarren@wwwdotorg.org>
Download mbox | patch
Permalink /patch/192476/
State Superseded
Delegated to: Albert ARIBAUD
Headers show

Comments

Stephen Warren - Oct. 18, 2012, 11:25 p.m.
From: Stephen Warren <swarren@nvidia.com>

When -ffunction-sections or -fdata-section are used, symbols are placed
into sections such as .data.eserial1_device and .bss.serial_current.
Update the linker script to explicitly include these. Without this
change (at least with my gcc-4.5.3 built using crosstool-ng), I see that
the sections do end up being included, but __bss_end__ gets set to the
same value as __bss_start.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
v2: Removed changes from some entries where it wasn't needed.
---
 arch/arm/cpu/u-boot.lds |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
Allen Martin - Oct. 20, 2012, 5:46 a.m.
On Thu, Oct 18, 2012 at 04:25:55PM -0700, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> When -ffunction-sections or -fdata-section are used, symbols are placed
> into sections such as .data.eserial1_device and .bss.serial_current.
> Update the linker script to explicitly include these. Without this
> change (at least with my gcc-4.5.3 built using crosstool-ng), I see that
> the sections do end up being included, but __bss_end__ gets set to the
> same value as __bss_start.
> 

Acked-by: Allen Martin <amartin@nvidia.com>

> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v2: Removed changes from some entries where it wasn't needed.
> ---
>  arch/arm/cpu/u-boot.lds |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> index e49ca0c..9153c3d 100644
> --- a/arch/arm/cpu/u-boot.lds
> +++ b/arch/arm/cpu/u-boot.lds
> @@ -34,8 +34,8 @@ SECTIONS
>  	.text :
>  	{
>  		__image_copy_start = .;
> -		CPUDIR/start.o (.text)
> -		*(.text)
> +		CPUDIR/start.o (.text*)
> +		*(.text*)
>  	}
>  
>  	. = ALIGN(4);
> @@ -43,7 +43,7 @@ SECTIONS
>  
>  	. = ALIGN(4);
>  	.data : {
> -		*(.data)
> +		*(.data*)
>  	}
>  
>  	. = ALIGN(4);
> @@ -81,7 +81,7 @@ SECTIONS
>  
>  	.bss __rel_dyn_start (OVERLAY) : {
>  		__bss_start = .;
> -		*(.bss)
> +		*(.bss*)
>  		 . = ALIGN(4);
>  		__bss_end__ = .;
>  	}
> -- 
> 1.7.0.4
>
Albert ARIBAUD - Oct. 26, 2012, 9:25 p.m.
Hi Stephen,

On Thu, 18 Oct 2012 17:25:55 -0600, Stephen Warren
<swarren@wwwdotorg.org> wrote:

> From: Stephen Warren <swarren@nvidia.com>
> 
> When -ffunction-sections or -fdata-section are used, symbols are placed
> into sections such as .data.eserial1_device and .bss.serial_current.
> Update the linker script to explicitly include these. Without this
> change (at least with my gcc-4.5.3 built using crosstool-ng), I see that
> the sections do end up being included, but __bss_end__ gets set to the
> same value as __bss_start.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v2: Removed changes from some entries where it wasn't needed.
> ---
>  arch/arm/cpu/u-boot.lds |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> index e49ca0c..9153c3d 100644
> --- a/arch/arm/cpu/u-boot.lds
> +++ b/arch/arm/cpu/u-boot.lds
> @@ -34,8 +34,8 @@ SECTIONS
>  	.text :
>  	{
>  		__image_copy_start = .;
> -		CPUDIR/start.o (.text)
> -		*(.text)
> +		CPUDIR/start.o (.text*)
> +		*(.text*)
>  	}
>  
>  	. = ALIGN(4);
> @@ -43,7 +43,7 @@ SECTIONS
>  
>  	. = ALIGN(4);
>  	.data : {
> -		*(.data)
> +		*(.data*)
>  	}
>  
>  	. = ALIGN(4);
> @@ -81,7 +81,7 @@ SECTIONS
>  
>  	.bss __rel_dyn_start (OVERLAY) : {
>  		__bss_start = .;
> -		*(.bss)
> +		*(.bss*)
>  		 . = ALIGN(4);
>  		__bss_end__ = .;
>  	}

Applied (this patch only in the series) to u-boot-arm/master, thanks!

Amicalement,
Albert ARIBAUD - Oct. 26, 2012, 9:44 p.m.
On Fri, 26 Oct 2012 23:25:01 +0200, Albert ARIBAUD
<albert.u.boot@aribaud.net> wrote:

> Hi Stephen,
> 
> On Thu, 18 Oct 2012 17:25:55 -0600, Stephen Warren
> <swarren@wwwdotorg.org> wrote:
> 
> > From: Stephen Warren <swarren@nvidia.com>
> > 
> > When -ffunction-sections or -fdata-section are used, symbols are placed
> > into sections such as .data.eserial1_device and .bss.serial_current.
> > Update the linker script to explicitly include these. Without this
> > change (at least with my gcc-4.5.3 built using crosstool-ng), I see that
> > the sections do end up being included, but __bss_end__ gets set to the
> > same value as __bss_start.
> > 
> > Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > ---
> > v2: Removed changes from some entries where it wasn't needed.
> > ---
> >  arch/arm/cpu/u-boot.lds |    8 ++++----
> >  1 files changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> > index e49ca0c..9153c3d 100644
> > --- a/arch/arm/cpu/u-boot.lds
> > +++ b/arch/arm/cpu/u-boot.lds
> > @@ -34,8 +34,8 @@ SECTIONS
> >  	.text :
> >  	{
> >  		__image_copy_start = .;
> > -		CPUDIR/start.o (.text)
> > -		*(.text)
> > +		CPUDIR/start.o (.text*)
> > +		*(.text*)
> >  	}
> >  
> >  	. = ALIGN(4);
> > @@ -43,7 +43,7 @@ SECTIONS
> >  
> >  	. = ALIGN(4);
> >  	.data : {
> > -		*(.data)
> > +		*(.data*)
> >  	}
> >  
> >  	. = ALIGN(4);
> > @@ -81,7 +81,7 @@ SECTIONS
> >  
> >  	.bss __rel_dyn_start (OVERLAY) : {
> >  		__bss_start = .;
> > -		*(.bss)
> > +		*(.bss*)
> >  		 . = ALIGN(4);
> >  		__bss_end__ = .;
> >  	}
> 
> Applied (this patch only in the series) to u-boot-arm/master, thanks!

Correction applied was V3, not V2, of the patch.

Amicalement,

Patch

diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index e49ca0c..9153c3d 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -34,8 +34,8 @@  SECTIONS
 	.text :
 	{
 		__image_copy_start = .;
-		CPUDIR/start.o (.text)
-		*(.text)
+		CPUDIR/start.o (.text*)
+		*(.text*)
 	}
 
 	. = ALIGN(4);
@@ -43,7 +43,7 @@  SECTIONS
 
 	. = ALIGN(4);
 	.data : {
-		*(.data)
+		*(.data*)
 	}
 
 	. = ALIGN(4);
@@ -81,7 +81,7 @@  SECTIONS
 
 	.bss __rel_dyn_start (OVERLAY) : {
 		__bss_start = .;
-		*(.bss)
+		*(.bss*)
 		 . = ALIGN(4);
 		__bss_end__ = .;
 	}