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

Tom Rini
2014-03-03T13:25:01Z

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 03/03/2014 03:41 AM, Richard Biener wrote:
> On Sun, 2 Mar 2014, Andreas F?rber wrote:
>
>> Am 02.03.2014 21:57, schrieb Andreas F?rber:
>>> Hi Albert,
>>>
>>> Am 02.03.2014 20:15, schrieb Albert ARIBAUD:
>>>> Hi Andreas,
>>>>
>>>> On Sun, 02 Mar 2014 18:57:14 +0100, Andreas F?rber <afaerber@suse.de>
>>>> wrote:
>>>>
>>>>> Hi Albert,
>>>>>
>>>>> Am 22.02.2014 14:27, schrieb Albert ARIBAUD:
>>>>>> On Thu, 13 Feb 2014 12:39:07 +0100, Albert ARIBAUD
>>>>>> <albert.u.boot@aribaud.net> wrote:
>>>>>>
>>>>>>> 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?
>>> [...]
>>>>> 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
>>>>
>>>> Thanks for your reply. Apparently, the problem does not appear for the
>>>> boards in mainline U-Boot which I listed above with the source code
>>>> from our v2014.01 tag and using gcc 4.8.1 from Linaro. I can install
>>>> 4.8.2, but meanwhile, can you try to build v2014.01 for these boards
>>>> with your setup?
>>>>
>>>> am335x_evm colibri_t20_iris highbank mx53loco omap3_beagle
>>>> omap4_panda paz00 rpi_b
>>>
>>> I have commented out the patch in:
>>> https://build.opensuse.org/project/show/home:a_faerber:branches:Base:System
>>>
>>> While there are apparently frequent rebuilds scheduled ATM, it seemed
>>> like the colibri_t20_iris config intermittently built OK without it.
>>> Maybe some gcc 4.8 stable branch update [1] resolved it ... will keep an
>>> eye on the build status to confirm. If everything builds, I'm happy.
>>
>> Nah, still fails without the patch:
>>
>> [ 178s] gcc -E -g -Os -ffunction-sections -fdata-sections
>> -fno-common -ffixed-r9 -msoft-float -D__KERNEL__
>> -DCONFIG_SYS_TEXT_BASE=0x0010E000
>> -I/home/abuild/rpmbuild/BUILD/u-boot-2014.01/include
>> -I/home/abuild/rpmbuild/BUILD/u-boot-2014.01/arch/arm/include
>> -fno-builtin -ffreestanding -nostdinc -isystem
>> /usr/lib/gcc/armv7hl-suse-linux-gnueabi/4.8/include -pipe -DCONFIG_ARM
>> -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux
>> -mword-relocations -march=armv7-a -include
>> /home/abuild/rpmbuild/BUILD/u-boot-2014.01/include/u-boot/u-boot.lds.h
>> -DCPUDIR=arch/arm/cpu/armv7 -ansi -D__ASSEMBLY__ -P -
>> </home/abuild/rpmbuild/BUILD/u-boot-2014.01/arch/arm/cpu/u-boot.lds
>>> u-boot.lds
>> [ 178s] cd /home/abuild/rpmbuild/BUILD/u-boot-2014.01 && ld.bfd -pie
>> -T u-boot.lds --gc-sections -Bstatic -Ttext 0x0010E000
> ^^^^^^^^^^^^
>
>> arch/arm/cpu/armv7/start.o --start-group arch/arm/cpu/armv7/built-in.o
>> arch/arm/cpu/armv7/tegra20/built-in.o arch/arm/cpu/built-in.o
>> arch/arm/lib/built-in.o board/toradex/colibri_t20_iris/built-in.o
>> common/built-in.o disk/built-in.o drivers/built-in.o
>> drivers/dma/built-in.o drivers/gpio/built-in.o drivers/i2c/built-in.o
>> drivers/input/built-in.o drivers/mmc/built-in.o drivers/mtd/built-in.o
>> drivers/mtd/nand/built-in.o drivers/mtd/onenand/built-in.o
>> drivers/mtd/spi/built-in.o drivers/net/built-in.o
>> drivers/net/phy/built-in.o drivers/pci/built-in.o
>> drivers/power/battery/built-in.o drivers/power/built-in.o
>> drivers/power/fuel_gauge/built-in.o drivers/power/mfd/built-in.o
>> drivers/power/pmic/built-in.o drivers/serial/built-in.o
>> drivers/spi/built-in.o drivers/usb/eth/built-in.o
>> drivers/usb/gadget/built-in.o drivers/usb/host/built-in.o
>> drivers/usb/musb-new/built-in.o drivers/usb/musb/built-in.o
>> drivers/usb/phy/built-in.o drivers/usb/ulpi/built-in.o fs/built-in.o
>> lib/built-in.o lib/libfdt/built-in.o net/built-in.o test/built-in.o
>> --end-group
>> /home/abuild/rpmbuild/BUILD/u-boot-2014.01/arch/arm/lib/eabi_compat.o
>> -L /usr/lib/gcc/armv7hl-suse-linux-gnueabi/4.8 -lgcc -Map u-boot.map -o
>> u-boot
>> [ 178s] ld.bfd: u-boot: could not find output section .gnu.hash
>> [ 178s] ld.bfd: final link failed: Nonrepresentable section on output
>> [ 178s] Makefile:556: recipe for target 'u-boot' failed
>> [ 178s] make: *** [u-boot] Error 1
>
> Looks more like an issue with the linker script used by u-boot. .gnu.hash
> is simply what recent linkers produce by default - you could try
> if using -Wl,--hash-style=sysv works around the issue, but it would still
> point to a linker script bug IMHO (or a bug in binutils, not gcc).

If that was true it would be consistently happening, but it's not. I
hope it's possible to save the output when the build fails.

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJTFIKtAAoJENk4IS6UOR1WFX8P+gLx3xjt0ZQny9LtSO0NtPqE
blyRLfwofg3ZRQz/aPk3Cpser+09jOJmAjqMCdweSSV+xR241jDWMI9V35zWr8kC
dmkMO6hKPlZVsA/odwD/cNco/1BOvZnr8+n1QA3vjcKSVaIU3y8+4v/wD4cuXbEl
MHFpN4fMEgatTVR85pxTdgXQAa9FUvxFp9czRkDjKOnY2gEFO7akxGbyY6sATtqU
5bzQbXGFdq+6viQazF0SgyXs0YDnq8oBRe7udK3BWI2m7lG0jNG+NR9cLO9uXbzm
fAWo7bZ1HHZC4HIPjNglpixFz/mI1pw6/uLyZMmfOTOFfKIsHZcXhKBnetHpQr1A
Lbvf8H8JTn1dkX3i4qx2nJWk4uDatJnQ6sr8TUaYc7xbt/yBkLdPqyjZwG6B1iNJ
GQHpKV2TUlNc59vWBEPJnH62mGd59UFs5vvckGP0KC/XQjT8EzIexpim7fLTAlrU
W94qwT8BXeq1dgS5o/9Kr1loaM/ek2sH9ihdATRHnrZ0wDzkta0Q72wGPCtbL+/8
nY75K4H3GN1sfZVW7ODjwrSIGUhPYX+pKzlK4t+rOSZrg2B46zARzVOXYaERAhIo
MTfg+qFvaMo5Le5bhun2FctYszVszO17fZ003QTY8y3w9RIoPzylentwYYAg7s0n
oZlQA7KMTcg1wmVqz697
=0p/l
-----END PGP SIGNATURE-----