On Thu, Jun 11, 2015 at 11:08:44AM -0400, Tom Rini wrote:
> 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).

OK, tracking down where is even easier than I recalled:
$ $PAGER temp/u-boot.map
...
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_ashldi3.o)
                              drivers/mmc/built-in.o (__aeabi_llsl)
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_aeabi_uldivmod.o)
                              drivers/mmc/built-in.o (__aeabi_uldivmod)
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_dvmd_lnx.o)
                              
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_udivsi3.o) (__aeabi_idiv0)
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(bpabi.o)
                              
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_aeabi_uldivmod.o) 
(__gnu_uldivmod_helper)
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_divdi3.o)
                              
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(bpabi.o) (__divdi3)
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(_udivdi3.o)
                              
/usr/lib/gcc/arm-linux-gnueabihf/4.7/libgcc.a(bpabi.o) (__udivdi3)

And patch coming shortly.

-- 
Tom

Attachment: signature.asc
Description: Digital signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to