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

Simon Glass
2012-10-17T23:58:56Z

Hi Stephen,

On Tue, Oct 16, 2012 at 2:50 PM, 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>
> ---
> 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