On Thu, Jun 11, 2015 at 03:44:10PM +0200, Hans de Goede wrote: > Hi, > > On 11-06-15 14:56, Tom Rini wrote: > >On Thu, Jun 11, 2015 at 09:41:29AM +0200, Hans de Goede wrote: > >>Hi, > >> > >>On 11-06-15 04:49, Simon Glass wrote: > >>>Hi, > >>> > >>>On 10 June 2015 at 08:56, Tom Rini <tr...@konsulko.com> wrote: > >>>>On Wed, Jun 10, 2015 at 04:54:50PM +0200, Hans de Goede wrote: > >>>> > >>>>>Hi Tom, > >>>>> > >>>>>Please pull u-boot-sunxi/master into master for 2 small bug-fixes: > >>>>> > >>>>>The following changes since commit > >>>>>3d0158ae18bef2ac89979f4c90419d3add436c71: > >>>>> > >>>>> Prepare v2015.07-rc2 (2015-06-08 17:48:33 -0400) > >>>>> > >>>>>are available in the git repository at: > >>>>> > >>>>> http://git.denx.de/u-boot-sunxi.git master > >>>>> > >>>>>for you to fetch changes up to 0751b138064db28f0866f0c2439afb8b3975180c: > >>>>> > >>>>> sunxi: Enable CONFIG_SYS_64BIT_LBA when AHCI is used (2015-06-10 > >>>>> 16:52:12 +0200) > >>>>> > >>>> > >>>>Applied to u-boot/master, thanks! > >>> > >>>I don't see this patch on the mailing list or I would reply there. > >> > >>Hmm, I asked the submitter to Cc the list when he suggested this patch on > >>irc, > >>I guess he only send it to me and I did not notice. > >> > >>>But for my toolchain I get errors: > >>> > >>>crosfw -b Orangepi_mini -w > >>># > >>># configuration written to .config > >>># > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>error: > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(bpabi.o) > >>>uses VFP register arguments, u-boot does not > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>failed to merge target specific data of file > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(bpabi.o) > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>error: > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(_divdi3.o) > >>>uses VFP register arguments, u-boot does not > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>failed to merge target specific data of file > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(_divdi3.o) > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>error: > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(_udivdi3.o) > >>>uses VFP register arguments, u-boot does not > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ld.bfd: > >>>failed to merge target specific data of file > >>>/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a(_udivdi3.o) > >>>make[1]: *** [u-boot] Error 1 > >>>make[1]: *** Waiting for unfinished jobs.... > >> > >>I'm not sure what todo about this, it works for me, and supporting disks > >>larger then 2TB seems like a desirable feature in this time and age. > > > >Ug. Yes, but you have to use do_div and friends and we've got another > >case where something snuck past not using those helpers. I forget the > >right incantation to use on either nm or objdump to figure out just > >which function/file is doing it wrong. > > Ok, so hopefully someone reading the list remembers and can provide us with a > list of > culprits. I can probably make some time to fix this even if the problem is > not in sunxi > code (all the commit does is enable CONFIG_SYS_64BIT_LBA which AFAIK does not > directly > influence any sunxi code). > > So for now lets keep this in master and try to get it fixed, if it is not > fixed in say > 2 rc-s from now then we should probably revert the sunxi commit (and break > large > disks again). >
OK, so I dug out the magic again (since there's a few other boards that fail on different toolchain with the same type of problem but another place). First: $ arm-linux-gnueabihf-nm /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/libgcc.a | grep -A 4 _udivdi3.o This will show you all of the functions provided there. Second: $ for F in `find output-dir -name *.o`;do arm-linux-gnueabihf-nm $F 2>&1 | grep -q THATSYMBOL && echo $F;done This will show you what object files have the function in question. Third: arm-linux-gnueabihf-objdump -d ONE/OBJ/FILE.o | $PAGER And hunt around for what function(s) here are calling the incorrect math function. Fourth: Examine the C in question until you spot the "bad" division, correct to use a helper from include/linux/math64.h (and yes we have some other helpers too that are home grown but I am in favor of using the kernel ones). -- Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot