diff mbox

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

Message ID 1390974126-4805-1-git-send-email-swarren@wwwdotorg.org
State Accepted
Delegated to: Albert ARIBAUD
Headers show

Commit Message

Stephen Warren Jan. 29, 2014, 5:42 a.m. UTC
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

Comments

Andreas Färber Jan. 29, 2014, 9:22 a.m. UTC | #1
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))
Tom Rini Jan. 29, 2014, 5:32 p.m. UTC | #2
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.
Stephen Warren Jan. 29, 2014, 6:38 p.m. UTC | #3
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.
Andreas Färber Jan. 29, 2014, 7:41 p.m. UTC | #4
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
Tom Rini Jan. 29, 2014, 7:47 p.m. UTC | #5
-----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-----
Andreas Färber Jan. 30, 2014, 7:03 a.m. UTC | #6
-----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-----
Stephen Warren Feb. 5, 2014, 2:19 a.m. UTC | #7
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?
Albert ARIBAUD Feb. 13, 2014, 2:07 p.m. UTC | #8
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 mbox

Patch

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