On 17-03-09 00:01:12, Trevor Woerner wrote: > On Wed 2017-03-08 @ 04:51:04 PM, Khem Raj wrote: > > On 17-03-08 19:01:05, Tom Rini wrote: > > > On Wed, Mar 08, 2017 at 03:42:00PM -0800, Khem Raj wrote: > > > > On 17-03-08 18:28:21, Tom Rini wrote: > > > > > On Wed, Mar 08, 2017 at 12:31:47PM -0500, Trevor Woerner wrote: > > > > > > > > > > > openembedded-core updated bintuils from 2.27 to 2.28 which causes > > > > > > u-boot to > > > > > > fail to compile: > > > > > > > > > > > > arm-oe-linux-gnueabi-ld.bfd: u-boot: Not enough room for > > > > > > program headers, try linking with -N > > > > > > > > > > > > Building with -N does fix the issue, so this patch simply adds that > > > > > > flag to > > > > > > the build so it succeeds. > > > > > > > > > > > > This has been build-tested, as well as run-tested on the firefly. > > > > > > > > > > > > Signed-off-by: Trevor Woerner <twoer...@gmail.com> > > > > > > > > > > Unless there's an immediate need I would ask holding off on this for a > > > > > bit, I want to track down why this is happening. > > > > > > > > perhaps linker map files from 2.27 and 2.28 binutils will help to > > > > understand it > > > > > > Nothing is standing out yet: > > > https://lists.denx.de/pipermail/u-boot/2017-March/283278.html > > > https://lists.denx.de/pipermail/u-boot/2017-March/283286.html > > > > I see that .data.rel.ro are generated eventhough they are empty they > > appear to be in final link this section will hold constant variables > > that gcc sees and needs dynamic relocation, that probably is not > > relevant to u-boot since its linked stand-alone > > > > Can you try to do just the final link with 2.28 and all built with 2.27 > > and see if it still happens, want to rule out assembler > > Okay. > > Building with 2.28 (and letting it fail), then repeating the final link step > with 2.27 succeeds!
OK thats good. Can you post the output of readelf -e on final good and bad binaries > > $ arm-oe-linux-gnueabi-ld.bfd -v > GNU ld (GNU Binutils) 2.27.0.20160806 > > $ arm-oe-linux-gnueabi-ld.bfd -pie --gc-sections -Bstatic -Ttext > 0x00000000 -o u-boot \ > -T u-boot.lds arch/arm/cpu/armv7/start.o --start-group > arch/arm/cpu/built-in.o \ > arch/arm/cpu/armv7/built-in.o arch/arm/lib/built-in.o > arch/arm/mach-rockchip/built-in.o \ > board/firefly/firefly-rk3288/built-in.o cmd/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/mmc/built-in.o drivers/mtd/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/built-in.o > drivers/power/battery/built-in.o \ > drivers/power/domain/built-in.o drivers/power/fuel_gauge/built-in.o > drivers/power/mfd/built-in.o \ > drivers/power/pmic/built-in.o drivers/power/regulator/built-in.o > drivers/serial/built-in.o \ > drivers/spi/built-in.o drivers/usb/common/built-in.o > drivers/usb/dwc3/built-in.o \ > drivers/usb/emul/built-in.o drivers/usb/eth/built-in.o > drivers/usb/gadget/built-in.o \ > drivers/usb/gadget/udc/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 net/built-in.o test/built-in.o test/dm/built-in.o > --end-group \ > arch/arm/lib/eabi_compat.o arch/arm/lib/lib.a -Map u-boot.map > $ echo $? > 0 > > Looking at the top couple lines of a diff between the map files of a > binutils-2.27 build and this frankenbuild (both with SPL, neither with -N) > gives: > > --- 2.27-without-N/u-boot.map 2017-03-08 13:26:26.966147350 -0500 > +++ build-with-2.28-link-with-2.27/u-boot.map 2017-03-08 > 23:48:43.593173398 -0500 > @@ -5442,7 +5442,7 @@ > .iplt 0x00000000000301a4 0x0 > arch/arm/cpu/armv7/start.o > 0x00000000000301a4 . = ALIGN (0x4) > > -.rodata 0x00000000000301a8 0x134dc > +.rodata 0x00000000000301a8 0x134b8 > *(SORT(.rodata*)) > .rodata.efi_boot_services > 0x00000000000301a8 0xc8 lib/built-in.o > @@ -5859,4836 +5859,4836 @@ > .rodata.cb_erase.str1.1 > 0x0000000000033745 0x60 > drivers/usb/gadget/built-in.o > .rodata.cb_getvar.str1.1 > - 0x00000000000337a5 0xfc > drivers/usb/gadget/built-in.o > - 0x10c (size before relaxing) > + 0x00000000000337a5 0xea > drivers/usb/gadget/built-in.o > + 0xfa (size before relaxing) It will be interesting to see what changed in .rodata.cb_getvar.str1.1 section here but I think that might not be the cause of the issue here. Can you go into drivers/usb/gadget/ and do readelf -a built-in.o -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto