[U-Boot] ARM ld: section .bss overlaps section .rel.dyn

Albert ARIBAUD
2011-10-30T16:05:23Z

Le 30/10/2011 13:46, Albert ARIBAUD a ?crit :
> Le 30/10/2011 12:33, Dirk Behme a ?crit :
>> On 30.10.2011 11:57, Albert ARIBAUD wrote:
>>> Le 30/10/2011 11:24, Albert ARIBAUD a ?crit :
>>>> Hi Dirk,
>>>>
>>>> Le 30/10/2011 10:47, Dirk Behme a ?crit :
>>>>>
>>>>> Doing a ./MAKEALL ARMV7 (gcc [1]) with the recent git head I get a
>>>>> lot of
>>>>>
>>>>> arm-none-linux-gnueabi-ld: section .bss [...] overlaps section
>>>>> .rel.dyn [...]
>>>>> arm-none-linux-gnueabi-ld: section .dynsym [...] overlaps section .bss
>>>>> [...]
>>>>> ...
>>>>> make: *** [u-boot] Error 1
>>>>>
>>>>> for various boards [2]. I wasn't able to track this down to specific
>>>>> commit, yet.
>>>>>
>>>>> Anybody with an idea?
>>>>
>>>> Weird... Linker file says explicitly that .bss does overlay above
>>>> .rel.dyn, so the first message should not ever happen. As for the
>>>> second, it could happen depending on the bss, .re.dyn and .dynsym
>>>> sizes,
>>>> maybe.
>>>>
>>>> I'll have a look today.
>>>
>>> I've tried ./MAKEALL efikamx with ELDK32, and did not see any warning
>
> That was ELDK42, of course.
>
>>> nn either u-boot/master (ce5207e191c59b3135303fd03b98dd2ac3701ba2) or
>>> u-boot-arm/master (8305f7e98b5f7b9b6070777e68f3fe1871b9cd92).
>>>
>>> Can you check your setup for locally modified/added files and let me
>>> know which exact commit ID you're building in (git rev-parse HEAD) and
>>> which ARM repo it is from?
>>
>> I'm using u-boot/master (ce5207e191c59b3135303fd03b98dd2ac3701ba2).
>> Anyway, git bisect seems to point to
>>
>> http://git.denx.de/?p=u-boot.git;a=commit;h=3cce8a5496452285e1828984ad3945417205cfc3
>>
>>
>> Not sure why, though. Using omap3_pandora as an example:
>>
>> > git rev-parse HEAD
>> 3cce8a5496452285e1828984ad3945417205cfc3
>> > make distclean
>> > ./MAKEALL omap3_pandora
>> Configuring for omap3_pandora board...
>> arm-none-linux-gnueabi-ld: section .bss [8005d1e8 -> 8008fddb] overlaps
>> section .rel.dyn [8005d1e8 -> 80063e97]
>> arm-none-linux-gnueabi-ld: section .dynsym [80063e98 -> 80063f57]
>> overlaps section .bss [8005d1e8 -> 8008fddb]
>> arm-none-linux-gnueabi-ld: u-boot: section .bss vma 0x8005d1e8 overlaps
>> previous sections
>> make: *** [u-boot] Error 1
>> size: './u-boot': No such file
>>
>> --------------------- SUMMARY ----------------------------
>> Boards compiled: 1
>> Boards with warnings or errors: 1 ( omap3_pandora )
>> ----------------------------------------------------------
>
> Builds fine with ELDK42 on my side.
>
> uboot at lilith:~/src/u-boot-arm$ ./MAKEALL omap3_pandora
> Configuring for omap3_pandora board...
> text data bss dec hex filename
> 377621 7936 207840 593397 90df5 ./u-boot
>
> --------------------- SUMMARY ----------------------------
> Boards compiled: 1
> ----------------------------------------------------------
> uboot at lilith:~/src/u-boot-arm$ git rev-parse HEAD
> 3cce8a5496452285e1828984ad3945417205cfc3
>
> Can you double-check your toolchain and host OS?

2009q1 shows the issue, but 2010q1 does not, nor does 2011q although it
gives the following warning:

arm-none-eabi-ld: warning:
/opt/arm-2011q1/bin/../lib/gcc/arm-none-eabi/4.5.2/libgcc.a(_bswapsi2.o)
uses variable-size enums yet the output is to use 32-bit enums; use of
enum values across objects may fail

As for the overlap issue: I see no significant difference in the map
files generated by 2009q1 and by 2010q1. I wonder if this could be a
change in the default state of the --check-sections option of ld?

> Amicalement,

Amicalement,
--
Albert.