Message ID | 1390974126-4805-1-git-send-email-swarren@wwwdotorg.org |
---|---|
State | Accepted |
Delegated to: | Albert ARIBAUD |
Headers | show |
Hi, Am 29.01.2014 06:42, schrieb Stephen Warren: > The entries in config.mk were needed so that U-Boot could be built > with an old version of the Raspberry Pi Foundation's toolchain. Without > them, the build would error out with: > > ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, > u-boot does not > > However, none of the 3 toolchains in the latest version of their > tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal > or Saucy, need these options set in order to compile a working U-Boot. > Hence, remove the options for simplicity. > > Reported-by: Tom Rini <trini@ti.com> > Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> > --- > arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- > 1 file changed, 19 deletions(-) > delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk No objection against the patch, but why was arch/arm/config.mk using -msoft-float in the first place? It's been changed from hardcoded to $(call cc-option ...)-wrapped [1], which may explain your experimental results, but IIUC it will still prefer -msoft-float if the compiler supports it [2] rather than if the SoC needs it, right? tegra20 for instance does support the hard-float ABI, too. Regards, Andreas [1] http://git.denx.de/?p=u-boot.git;a=commit;h=0ae7653128c80a4f2920cbe9b124792c2fd9d9e0 [2] http://git.denx.de/?p=u-boot.git;a=blob;f=config.mk;h=b824bb3469dd577909ad804d655f29d56f0b14cd;hb=HEAD#l103 > diff --git a/arch/arm/cpu/arm1176/bcm2835/config.mk b/arch/arm/cpu/arm1176/bcm2835/config.mk > deleted file mode 100644 > index b87ce24..0000000 > --- a/arch/arm/cpu/arm1176/bcm2835/config.mk > +++ /dev/null > @@ -1,19 +0,0 @@ > -# > -# (C) Copyright 2012 Stephen Warren > -# > -# See file CREDITS for list of people who contributed to this > -# project. > -# > -# This program is free software; you can redistribute it and/or > -# modify it under the terms of the GNU General Public License > -# version 2 as published by the Free Software Foundation. > -# > -# This program is distributed in the hope that it will be useful, but > -# WITHOUT ANY WARRANTY; without even the implied warranty of > -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -# GNU General Public License for more details. > - > -# Don't attempt to override the target CPU/ABI options; > -# the Raspberry Pi toolchain does the right thing by default. > -PLATFORM_RELFLAGS := $(filter-out -msoft-float,$(PLATFORM_RELFLAGS)) > -PLATFORM_CPPFLAGS := $(filter-out -march=armv5t,$(PLATFORM_CPPFLAGS))
On Wed, Jan 29, 2014 at 10:22:18AM +0100, Andreas Färber wrote: > Hi, > > Am 29.01.2014 06:42, schrieb Stephen Warren: > > The entries in config.mk were needed so that U-Boot could be built > > with an old version of the Raspberry Pi Foundation's toolchain. Without > > them, the build would error out with: > > > > ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, > > u-boot does not > > > > However, none of the 3 toolchains in the latest version of their > > tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal > > or Saucy, need these options set in order to compile a working U-Boot. > > Hence, remove the options for simplicity. > > > > Reported-by: Tom Rini <trini@ti.com> > > Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> > > --- > > arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- > > 1 file changed, 19 deletions(-) > > delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk > > No objection against the patch, but why was arch/arm/config.mk using > -msoft-float in the first place? It's been changed from hardcoded to > $(call cc-option ...)-wrapped [1], which may explain your experimental > results, but IIUC it will still prefer -msoft-float if the compiler > supports it [2] rather than if the SoC needs it, right? tegra20 for > instance does support the hard-float ABI, too. U-Boot for ARM _is_ soft-float. There's some issue with an older RPi foundation toolchain that causes what at first glance looks like an odd choice of VFP using function to be used when it doesn't need to be. That's not to say we cannot compile with an armhf-only toolchain. We can and I do daily.
On 01/29/2014 02:22 AM, Andreas Färber wrote: > Hi, > > Am 29.01.2014 06:42, schrieb Stephen Warren: >> The entries in config.mk were needed so that U-Boot could be built >> with an old version of the Raspberry Pi Foundation's toolchain. Without >> them, the build would error out with: >> >> ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, >> u-boot does not >> >> However, none of the 3 toolchains in the latest version of their >> tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal >> or Saucy, need these options set in order to compile a working U-Boot. >> Hence, remove the options for simplicity. >> >> Reported-by: Tom Rini <trini@ti.com> >> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> >> --- >> arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- >> 1 file changed, 19 deletions(-) >> delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk > > No objection against the patch, but why was arch/arm/config.mk using > -msoft-float in the first place? It wasn't. It was filtering -msoft-float out of the compiler flags, which then left the ABI up to the toolchain default, which was hardfp for one of the Raspberry Pi Foundation's toolchains - the same one that caused the error messages quoted above unless -msoft-float was removed from the compiler options.
Am 29.01.2014 19:38, schrieb Stephen Warren: > On 01/29/2014 02:22 AM, Andreas Färber wrote: >> Am 29.01.2014 06:42, schrieb Stephen Warren: >>> The entries in config.mk were needed so that U-Boot could be built >>> with an old version of the Raspberry Pi Foundation's toolchain. Without >>> them, the build would error out with: >>> >>> ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, >>> u-boot does not >>> >>> However, none of the 3 toolchains in the latest version of their >>> tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal >>> or Saucy, need these options set in order to compile a working U-Boot. >>> Hence, remove the options for simplicity. >>> >>> Reported-by: Tom Rini <trini@ti.com> >>> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> >>> --- >>> arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- >>> 1 file changed, 19 deletions(-) >>> delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk >> >> No objection against the patch, but why was arch/arm/config.mk using >> -msoft-float in the first place? > > It wasn't. It was filtering -msoft-float out of the compiler flags, > which then left the ABI up to the toolchain default, which was hardfp > for one of the Raspberry Pi Foundation's toolchains - the same one that > caused the error messages quoted above unless -msoft-float was removed > from the compiler options. You seem to have misread my question, it was not about bcm2835/config.mk but about arm/config.mk, which bcm2835 was filtering. I didn't quite get Tom's response about U-Boot being soft-float. It is what I compile it to be, no? If I compile it with an hardfp toolchain such as openSUSE's, without -msoft-float it is going to be hardfp IIUC. softfp is for compatibility with non-VFP hardware I thought, but U-Boot is clearly built with a per-board config, so it's not portable anyway. Andreas
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/29/2014 02:41 PM, Andreas Färber wrote: > Am 29.01.2014 19:38, schrieb Stephen Warren: >> On 01/29/2014 02:22 AM, Andreas Färber wrote: >>> Am 29.01.2014 06:42, schrieb Stephen Warren: >>>> The entries in config.mk were needed so that U-Boot could be >>>> built with an old version of the Raspberry Pi Foundation's >>>> toolchain. Without them, the build would error out with: >>>> >>>> ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register >>>> arguments, u-boot does not >>>> >>>> However, none of the 3 toolchains in the latest version of >>>> their tools.git, nor the Ubuntu/Linaro ARM compilers in at >>>> least Ubuntu Quantal or Saucy, need these options set in >>>> order to compile a working U-Boot. Hence, remove the options >>>> for simplicity. >>>> >>>> Reported-by: Tom Rini <trini@ti.com> Signed-off-by: Stephen >>>> Warren <swarren@wwwdotorg.org> --- >>>> arch/arm/cpu/arm1176/bcm2835/config.mk | 19 >>>> ------------------- 1 file changed, 19 deletions(-) delete >>>> mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk >>> >>> No objection against the patch, but why was arch/arm/config.mk >>> using -msoft-float in the first place? >> >> It wasn't. It was filtering -msoft-float out of the compiler >> flags, which then left the ABI up to the toolchain default, which >> was hardfp for one of the Raspberry Pi Foundation's toolchains - >> the same one that caused the error messages quoted above unless >> -msoft-float was removed from the compiler options. > > You seem to have misread my question, it was not about > bcm2835/config.mk but about arm/config.mk, which bcm2835 was > filtering. No, I know what you said. > I didn't quite get Tom's response about U-Boot being soft-float. It > is what I compile it to be, no? If I compile it with an hardfp > toolchain such as openSUSE's, without -msoft-float it is going to > be hardfp IIUC. softfp is for compatibility with non-VFP hardware I > thought, but U-Boot is clearly built with a per-board config, so > it's not portable anyway. This isn't quite correct. U-Boot is like the kernel. We say how we're built and like the kernel, we are soft float (and unless the board says we need it, we aren't thumb/thumb2 either). That's why arch/arm/config.mk (like arch/arm/Makefile in the kernel) enforces - -msoft-float. - -- Tom -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBAgAGBQJS6Vq5AAoJENk4IS6UOR1WMCYQAIn6ki/N2ts1S27/PHuUqJRM ogEvhpejaYv35GxKMqMvlz264r/8WCzXJHhATpjST3gP0NTgD5ATHJMIW0gvjMEi F855bSr+lRo1bAbzdrn14bWprqCCSnKGQp3f5H4V1pt8Zck3g+lZay+9d+hwW/8k SXylTjqhsCqseq5D+FdUbcuVZmeqUBbX3iM9kfPD9IvTaYDvEFDCj5JcFpQnM62h Eo/i0id2hV9dTaeC2UPSBKZ0xyNajGZAMTrZTeSPNfHLnAjPyG1UVOl29V3LHME6 qwBmZwbtWhSJARaNW8HwT/6ngewetjyJdjb9hi4HGlBJDJtfJIH/XanBZOVaSW9B jwmjpxF7n3drqODTKWb5GXOUkUbojPfKtWVvDsLKRuZgkpxUnTM208EL7aebQ1zs N84FkiUsbcIBDwkLBtTLl8spE9ZFNk/LgGUnTiBe0oF3+GAxqC8rx8rz9kn8D5Xa 668k8uT0PiXCXtPM2PVQN7HTCIuUcaBRV4FOjJy6UNVS0QV96MY5Gnou44I0cmZH OY5r3g4tekWpUOL1904Rur2KbhP01nhw4PPKZBU6q2Kk6zlA1BWNVEXN3lT+WY0g wHtvD2vhS0MiBNpNBIhgeKghW3B/2SMUDbP1BEI1kq8pccLObA9kMluTjnaw7TPt NOZs19lCtOsJKb3Ot5Mu =Lob9 -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 29.01.2014 20:47, schrieb Tom Rini: > On 01/29/2014 02:41 PM, Andreas Färber wrote: >> Am 29.01.2014 19:38, schrieb Stephen Warren: >>> On 01/29/2014 02:22 AM, Andreas Färber wrote: >>>> Am 29.01.2014 06:42, schrieb Stephen Warren: >>>>> The entries in config.mk were needed so that U-Boot could >>>>> be built with an old version of the Raspberry Pi >>>>> Foundation's toolchain. Without them, the build would error >>>>> out with: >>>>> >>>>> ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register >>>>> arguments, u-boot does not >>>>> >>>>> However, none of the 3 toolchains in the latest version of >>>>> their tools.git, nor the Ubuntu/Linaro ARM compilers in at >>>>> least Ubuntu Quantal or Saucy, need these options set in >>>>> order to compile a working U-Boot. Hence, remove the >>>>> options for simplicity. >>>>> >>>>> Reported-by: Tom Rini <trini@ti.com> Signed-off-by: >>>>> Stephen Warren <swarren@wwwdotorg.org> --- >>>>> arch/arm/cpu/arm1176/bcm2835/config.mk | 19 >>>>> ------------------- 1 file changed, 19 deletions(-) delete >>>>> mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk >>>> >>>> No objection against the patch, but why was >>>> arch/arm/config.mk using -msoft-float in the first place? >>> >>> It wasn't. It was filtering -msoft-float out of the compiler >>> flags, which then left the ABI up to the toolchain default, >>> which was hardfp for one of the Raspberry Pi Foundation's >>> toolchains - the same one that caused the error messages quoted >>> above unless -msoft-float was removed from the compiler >>> options. > >> You seem to have misread my question, it was not about >> bcm2835/config.mk but about arm/config.mk, which bcm2835 was >> filtering. > > No, I know what you said. Tom, I didn't dispute that. But Stephen's statement above was clearly wrong if you look at v2013.10: http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/config.mk;h=bdabcf407e2c7cf783e4e73b05acec2031d2189c;hb=183acb700378a8cfc5d50a01a65de93fb2c24586#l19 It was in fact using -msoft-float, as you confirm below, and bcm2835 was the one filtering it out. In v2014.01 -msoft-float gets compile-tested before usage and therefore the bcm2835-specific filtering here can be dropped. >> I didn't quite get Tom's response about U-Boot being soft-float. >> It is what I compile it to be, no? If I compile it with an >> hardfp toolchain such as openSUSE's, without -msoft-float it is >> going to be hardfp IIUC. softfp is for compatibility with non-VFP >> hardware I thought, but U-Boot is clearly built with a per-board >> config, so it's not portable anyway. > > This isn't quite correct. U-Boot is like the kernel. We say how > we're built and like the kernel, we are soft float (and unless the > board says we need it, we aren't thumb/thumb2 either). That's why > arch/arm/config.mk (like arch/arm/Makefile in the kernel) enforces > -msoft-float. OK, thanks for explaining. Our v2013.10 package was carrying a patch dropping the hardcoded -msoft-float for our armv7hl toolchain and it worked okay as far as I could tell. I've dropped that patch now for v2014.01 and things at least still build for me. Question solved and FWIW Reviewed-by: Andreas Färber <afaerber@suse.de> Cheers, Andreas - -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJS6flZAAoJEPou0S0+fgE/9AwP/Rq50Ch6Aqso/jBEdAZRAnCI P9hZGe1YpQOsajd4AN2V6VO/FOwu58jZNTfh2y/pPYHWqhYoXZh7OeUz/Oyj1PK5 Ltq/vjjF4RLTW94MhXHzgegxxBoyO2gGzpojY0bpzLCv6NQJPtRFiudoLy4x6kRc kEJi2sJgegaOQbKzDhjxUse7HsQPc6FObH4iHsH5iYO8wSvgPXDx2//J0S4MopHj jxGMEmPaB1mm5of/Qw8//W2+2Lir17eVG0Lu9f1HVxZXqNEYVTG2VmWKvCpE92U/ 1VhcNshmL6cNvr7k8eTThrR1i6zizBw4bBd81JW3zd/cTCxCkNh8cWyy8Zy3sM8y 4rUhPXgN+L1k70YpPjHlh29Lb7Zd15yCiIshElBb0aOkNkd8qOpWOvy5iPxbPZ5u w2ClZTl8jiChxMqWHe8YNLEV4Pwe9PgIRFHkhBzaR2be0uWuwnxVLmTdre2A/aQH SvtBVbt0+sJgxDTUaLCPNMIxydrPZDiSwrBrrB+8fcxKBayHWQJm5n5MMda8teiT dBAPXo+qCqpXjajEfz9jbW9/xJEQAUzlJCBgBHCmq1Ljbuei74ovVuM6yjAd5uEV Y71IaXgWZ8aHmJHl6zhp5B46O6j4aSfi4HzoyC9ggq2l7GJkMAONn2JNQi6gAT97 cv8lTM1Xo0W3hLQRIqpm =Bgtl -----END PGP SIGNATURE-----
On 01/28/2014 10:42 PM, Stephen Warren wrote: > The entries in config.mk were needed so that U-Boot could be built > with an old version of the Raspberry Pi Foundation's toolchain. Without > them, the build would error out with: > > ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, > u-boot does not > > However, none of the 3 toolchains in the latest version of their > tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal > or Saucy, need these options set in order to compile a working U-Boot. > Hence, remove the options for simplicity. Albert, does this look good?
Hi Stephen, On Tue, 28 Jan 2014 22:42:06 -0700, Stephen Warren <swarren@wwwdotorg.org> wrote: > The entries in config.mk were needed so that U-Boot could be built > with an old version of the Raspberry Pi Foundation's toolchain. Without > them, the build would error out with: > > ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, > u-boot does not > > However, none of the 3 toolchains in the latest version of their > tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal > or Saucy, need these options set in order to compile a working U-Boot. > Hence, remove the options for simplicity. > > Reported-by: Tom Rini <trini@ti.com> > Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> > --- > arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- > 1 file changed, 19 deletions(-) > delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk > > diff --git a/arch/arm/cpu/arm1176/bcm2835/config.mk b/arch/arm/cpu/arm1176/bcm2835/config.mk > deleted file mode 100644 > index b87ce24..0000000 > --- a/arch/arm/cpu/arm1176/bcm2835/config.mk > +++ /dev/null > @@ -1,19 +0,0 @@ > -# > -# (C) Copyright 2012 Stephen Warren > -# > -# See file CREDITS for list of people who contributed to this > -# project. > -# > -# This program is free software; you can redistribute it and/or > -# modify it under the terms of the GNU General Public License > -# version 2 as published by the Free Software Foundation. > -# > -# This program is distributed in the hope that it will be useful, but > -# WITHOUT ANY WARRANTY; without even the implied warranty of > -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > -# GNU General Public License for more details. > - > -# Don't attempt to override the target CPU/ABI options; > -# the Raspberry Pi toolchain does the right thing by default. > -PLATFORM_RELFLAGS := $(filter-out -msoft-float,$(PLATFORM_RELFLAGS)) > -PLATFORM_CPPFLAGS := $(filter-out -march=armv5t,$(PLATFORM_CPPFLAGS)) Applied to u-boot-arm/master, thanks! Amicalement,
diff --git a/arch/arm/cpu/arm1176/bcm2835/config.mk b/arch/arm/cpu/arm1176/bcm2835/config.mk deleted file mode 100644 index b87ce24..0000000 --- a/arch/arm/cpu/arm1176/bcm2835/config.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# (C) Copyright 2012 Stephen Warren -# -# See file CREDITS for list of people who contributed to this -# project. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# version 2 as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# Don't attempt to override the target CPU/ABI options; -# the Raspberry Pi toolchain does the right thing by default. -PLATFORM_RELFLAGS := $(filter-out -msoft-float,$(PLATFORM_RELFLAGS)) -PLATFORM_CPPFLAGS := $(filter-out -march=armv5t,$(PLATFORM_CPPFLAGS))
The entries in config.mk were needed so that U-Boot could be built with an old version of the Raspberry Pi Foundation's toolchain. Without them, the build would error out with: ...-ld: error: .../libgcc.a(_bswapsi2.o) uses VFP register arguments, u-boot does not However, none of the 3 toolchains in the latest version of their tools.git, nor the Ubuntu/Linaro ARM compilers in at least Ubuntu Quantal or Saucy, need these options set in order to compile a working U-Boot. Hence, remove the options for simplicity. Reported-by: Tom Rini <trini@ti.com> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> --- arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk