
Hi Wolfgang,
Le 02/12/2010 08:34, Wolfgang Denk a écrit :
Dear Albert ARIBAUD,
In message4CF743E6.60706@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.
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.
Best regards,
Wolfgang Denk
Amicalement,