[U-Boot] [PATCH 1/4] ARM: fix u-boot.lds for -ffunction-sections/-fdata-sections

Simon Glass sjg at chromium.org
Thu Oct 18 01:58:56 CEST 2012


Hi Stephen,

On Tue, Oct 16, 2012 at 2:50 PM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> From: Stephen Warren <swarren at 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 at nvidia.com>
> ---
> This series fixes an SPL size overflow problem on Tegra. Tom Warren is
> out on vacation until Oct 25th, so he certainly won't be able to review
> this. Perhaps it could be applied directly to the ARM tree if enough
> Tegra people ack the series?
>
> Note that this series is not enough to make Tegra support work; either
> you must hack ./arch/arm/cpu/arm720t/tegra-common/spl.c to call
> serial_initialize() right before serial_init() in preloader_console_init()
> or wait for Allen Martin to rework Tegra's SPL support using the common
> SPL code.

Are you going to submit a patch to enable function-sections, or is
that a separate discussion?

>
>  arch/arm/cpu/u-boot.lds |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
> index e49ca0c..ae04a6e 100644
> --- a/arch/arm/cpu/u-boot.lds
> +++ b/arch/arm/cpu/u-boot.lds
> @@ -35,7 +35,7 @@ SECTIONS
>         {
>                 __image_copy_start = .;
>                 CPUDIR/start.o (.text)
> -               *(.text)
> +               *(.text*)
>         }
>
>         . = ALIGN(4);
> @@ -43,14 +43,14 @@ SECTIONS
>
>         . = ALIGN(4);
>         .data : {
> -               *(.data)
> +               *(.data*)
>         }
>
>         . = ALIGN(4);
>
>         . = .;
>         __u_boot_cmd_start = .;
> -       .u_boot_cmd : { *(.u_boot_cmd) }
> +       .u_boot_cmd : { *(.u_boot_cmd*) }

I don't think this line is needed?

>         __u_boot_cmd_end = .;
>
>         . = ALIGN(4);
> @@ -65,7 +65,7 @@ SECTIONS
>
>         .dynsym : {
>                 __dynsym_start = .;
> -               *(.dynsym)
> +               *(.dynsym*)

Nor this one?

>         }
>
>         _end = .;
> @@ -81,7 +81,7 @@ SECTIONS
>
>         .bss __rel_dyn_start (OVERLAY) : {
>                 __bss_start = .;
> -               *(.bss)
> +               *(.bss*)
>                  . = ALIGN(4);
>                 __bss_end__ = .;
>         }
> --
> 1.7.0.4
>

Regards,
Simon


More information about the U-Boot mailing list