[U-Boot] [PATCH] arm: Handle .gnu.hash section in ldscripts

Andreas Färber
2014-03-02T17:57:14Z

Hi Albert,

Am 22.02.2014 14:27, schrieb Albert ARIBAUD:
> Hi Albert,
>
> On Thu, 13 Feb 2014 12:39:07 +0100, Albert ARIBAUD
> <albert.u.boot@aribaud.net> wrote:
>
>> Hi Andreas,
>>
>> On Mon, 27 Jan 2014 19:46:03 +0100, Andreas F?rber <afaerber@suse.de>
>> wrote:
>>
>>> Hello,
>>>
>>> Am 27.01.2014 15:24, schrieb Wolfgang Denk:
>>>> In message <1390798091-24747-1-git-send-email-afaerber@suse.de> you wrote:
>>>>> Avoids "could not find output section .gnu.hash" ld.bfd errors on openSUSE.
>>>>>
>>>>> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
>>>>> Cc: Tom Rini <trini@ti.com>
>>>>> Signed-off-by: Andreas F?rber <afaerber@suse.de>
>>>>> ---
>>>>> More changes like this may be needed, but these I compile-tested with
>>>>> v2014.01 (regression from v2013.10). colibri_t20_iris was runtime-tested.
>>>>> GCC 4.8.2 r206511, binutils 2.24
>>>>>
>>>>> arch/arm/cpu/u-boot.lds | 1 +
>>>>> board/ti/am335x/u-boot.lds | 1 +
>>>>> 2 files changed, 2 insertions(+)
>>>>
>>>> Is this an ARM specific issue, or other architectures affected as
>>>> well?
>>>
>>> I figured out that the section was apparently not caught by the .gnu*
>>> wildcard and this patch fixed our build for the following ARM configs:
>>>
>>> am335x_evm
>>> arndale
>>> colibri_t20_iris
>>> cubieboard
>>> highbank
>>> hyundai_a7hd
>>> mele_a1000
>>> mx53loco
>>> omap3_beagle
>>> omap4_panda
>>> paz00
>>> rpi_b
>>>
>>> My guess was that this could be related to the arm-only commit:
>>> http://git.denx.de/?p=u-boot.git;a=commit;h=47ed5dd031d7d2c587e6afd386e79ccec1a1b7f7
>>> (which touches on a few more .lds files than mine)
>>>
>>> But I see nothing ARM-specific in .gnu.hash sections, so other
>>> architectures might in theory be affected as well.
>>> Cf. http://sourceware.org/ml/binutils/2006-10/msg00377.html
>>>
>>> I did read your post for ELDK pointing someone to an FAQ entry on not
>>> using gcc-specific flags with ld, but for one I did not spot such a
>>> thing in the ld command line, and for another our toolchain did not
>>> change and v2013.10 builds succeed whereas v2014.01 builds failed
>>> without the patch. I could try to git-bisect the offending change if
>>> necessary.
>>
>> Using gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7), I cannot see
>> any issues on these boards:
>>
>> am335x_evm
>> colibri_t20_iris
>> highbank
>> mx53loco
>> omap3_beagle
>> omap4_panda
>> paz00
>> rpi_b
>>
>> On arndale, issues are due to warnings unrelated to linking.
>>
>> Cubieboard, hyundai_a7hd, mele_a1000 are not in mainline AFAICT (but I'd
>> like to see mele_a1000 in, as this might mean mele_a1000g could
>> follow. :) )

Sorry, missed that. I had merged v2014.01 into the sunxi tree and
updated our downstream patch from it (v2014.01-sunxi.patch). It did not
seem to touch on Makefile or ldscript in an interfering way.
Cf. https://github.com/afaerber/u-boot/commits/sunxi

Other downstream changes include forcing ext4 support for SPL and
tweaking boot.scr vs. boot.scr.uimg filename inconsistencies.

>> Can you point me to the toolchain you are using, and if you are not
>> building mainline code, can you make this code available to me somehow?
>
> Ping.

Somehow I did not receive the previous message...

Our latest GCC 4.8.2 can be found here:
https://build.opensuse.org/package/show/openSUSE:Factory:ARM/gcc48

Matching binutils 2.24 are here:
https://build.opensuse.org/package/show/openSUSE:Factory:ARM/binutils

Our latest U-Boot tarball and patches:
https://build.opensuse.org/package/show/Base:System/u-boot
Build logs can be found in the u-boot-* packages in the same project,
with underscores stripped, e.g.:
https://build.opensuse.org/package/show/Base:System/u-boot-am335xevm

Amicalement,

Andreas

--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imend?rffer; HRB 16746 AG N?rnberg