[U-Boot] Please pull u-boot-sunxi master

Tom Rini trini at konsulko.com
Fri Jun 12 02:48:00 CEST 2015


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 <trini at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150611/41a569d0/attachment.sig>


More information about the U-Boot mailing list