[U-Boot] [PATCH] ARMv7: Fix linker errors across toolchain versions
Premi, Sanjeev
premi at ti.com
Thu Dec 2 09:14:35 CET 2010
> -----Original Message-----
> From: Albert ARIBAUD [mailto:albert.aribaud at free.fr]
> Sent: Thursday, December 02, 2010 1:21 PM
> To: Wolfgang Denk
> Cc: u-boot at lists.denx.de; Premi, Sanjeev
> Subject: Re: [U-Boot] [PATCH] ARMv7: Fix linker errors across
> toolchain versions
>
> Hi Wolfgang,
>
> Le 02/12/2010 08:34, Wolfgang Denk a écrit :
> > Dear Albert ARIBAUD,
> >
> > In message<4CF743E6.60706 at free.fr> you wrote:
> >>
> >> Starting with the fact that the linker issue is only for one board,
> >> omap3_evm, I looked up the board-specific code. First thing that I
> >> noticed was
> >>
> >> static u8 omap3_evm_version;
> >>
> >> I changed this to
> >>
> >> static u8 omap3_evm_version = 1;
> >>
> >> so that the static was moved out of BSS and the linker warning
> >> disappeared (reminder: v2010.12-rc2, omap3_evm, arm-2010q1).
> >>
> >> Now this is not the first static BSS variable we use in
> U-Boot, and the
> >> others did not cause linker warnings (not *all* the
> others, at least),
> >> so the real cause is yet unknown to me. But that's at
> least a lead we
> >> can follow.
> >
> > Write access is only in omap3_evm_get_revision() which in turn only
> > gets called in misc_init_r(), i. e. after relocation.
> >
> > Read access is only in get_omap3_evm_rev() [which is not called
> > outside this file and thus should be made static!] which gets called
> > only in omap3_evm_need_extvbus() which gets acalled only in
> > musb_platform_init(), i. e. during USB init.
> >
> > This should be safe.
>
> Alright.
>
> > You could try out what happens if you make
> get_omap3_evm_rev() static...
>
> No change: the warning remains, and so do the two segments.
>
> Maybe I should subscribe the binutils list and ask there.
>
> Meanwhile, this variable could be initialized to some safe
> value such as
> OMAP3EVM_BOARD_UNKNOWN.
One of the things I did to move it away from .bss
>
> BTW... Why on Earth is it an uint8? Probably a space saving
> measure, but
> one I think is not really fruitful, because of probable paddings and
> alignments; making it an int would allow using smsc_id directly as
> values for the OMAP3EVM_BOARD_GEN_1 and OMAP3EVM_BOARD_GEN_2...
>
> ... plus it removes the linker warning!
>
> I thus suggest turning omap3_evm_version from uint8 to int and get on
> with debugging the board.
Albert,
I have already done this - may not be exactly same. while trying to debug
linker script problem; did not want to deviate from the current problem
so it is in my working code.
~sanjeev
>
> > Best regards,
> >
> > Wolfgang Denk
>
> Amicalement,
> --
> Albert.
>
More information about the U-Boot
mailing list