[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