[U-Boot] [PATCH] ARM: Fix __bss_start and __bss_end in linker scripts
Albert ARIBAUD
albert.u.boot at aribaud.net
Mon Apr 8 21:03:05 CEST 2013
Hi Tom,
On Fri, 5 Apr 2013 16:23:30 -0400, Tom Rini <trini at ti.com> wrote:
> On Fri, Apr 05, 2013 at 10:04:02PM +0200, Albert ARIBAUD wrote:
>
> > The two general ideas of my proposal are:
> >
> > 1) to separate testing the image (text,data,rodata,lists) size on the
> > one hand and the image BSS size on the other hand, and
> >
> > 2) to consider that if a target defines an image max size and a BSS
> > max size, then the image max size does not include the BSS size ; and
> > if it defined an image max size but no BSS max size, then the image max
> > size includes the BSS.
> >
> > The first idea allows boards with disjoint image and BSS to still check
> > eahc part's size, a thing not feasible with the current code; the
> > second idea allows fewer changes, but if one wants CONFIG_SPL_MAX_SIZE
> > to have a strict meaning, we can drop idea #2 and still keep idea #1.
>
> Make it so, thanks!
Just a quick heads up: in the little time I could spare this week-end,
I analyzed the SPL image vs BSS max sizes issue, and the following
appeared:
1. File arch/arm/cpu/u-boot.lds has an ASSERT() regarding SPL even
though it is never used for building SPL (tested by replacing the
ASSERT() condition by 0 and building all of ARM).
2. Several boards use arch/arm/cpu/u-boot-spl.lds, which has an ASSERT()
wrongly comparing image+BSS size to image-only CONFIG_SPL_MAX_SIZE.
Fixing the linker file will fix all tegra boards as well as the
exynos origen and smdkv310.
Note: the tegra-common.h config file states a non-existent .lds file
for SPL.
3. Boards cam_enc_4xx, da850evm, smdk5250 and snow all define maximum
SPL size to include image and BSS. These must be split arbitrarily;
I have chosen values that fit sizes from current build results.
4. Boards MPC8313ERDB_[NAND_]{33,66} hardcode their image+BSS limit. I
have left this untouched.
5. Board a3m071 and its linker file define CONFIG_SYS_SPL_MAX_LEN
instead of CONFIG_SPL_MAX_SIZE, but the semantics are correct. Left
unchanged.
6. Generic p1_p2_rdb_pc board header defines CONFIG_SPL_MAX_SIZE but
linker files do not seem to test it anyway. Left unchanged.
7. Tegra configs specify a non-existent lds file name. Build defaults
to generic ARM lds file. Left unchanged.
Patch series to follow in a couple of hours.
Amicalement,
--
Albert.
More information about the U-Boot
mailing list