[U-Boot] [PATCH] ARM: bcm2835: config.mk isn't needed

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))

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=0ae7653128c80a4f2920cbe9b124792c... [2] http://git.denx.de/?p=u-boot.git;a=blob;f=config.mk;h=b824bb3469dd577909ad80...
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 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=bdabcf407e2c7...
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

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,
participants (4)
-
Albert ARIBAUD
-
Andreas Färber
-
Stephen Warren
-
Tom Rini