Skip to contentSkip to conversation

ARM: bcm2835: config.mk isn't needed

PATCH New Stephen Warren 4 participants 9 messages Jan 29, 2014 – Feb 13, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---
 arch/arm/cpu/arm1176/bcm2835/config.mk | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk
arch/arm/cpu/arm1176/bcm2835/config.mk deleted +0 -19
deleted file mode 100644
index b87ce24..0000000
@@ -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))
Signature · 1 line
1.8.3.2
#1 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

Hi,

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 12 lines

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.

Quoted 6 lines
---
 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

Quoted 25 lines
arch/arm/cpu/arm1176/bcm2835/config.mk deleted +0 -19
deleted file mode 100644
index b87ce24..0000000
@@ -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))
Signature · 2 lines
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imend?rffer; HRB 16746 AG N?rnberg
#2 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

Quoted 22 lines · Andreas F?rber

Hi,

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 12 lines

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.

Quoted 6 lines
---
 arch/arm/cpu/arm1176/bcm2835/config.mk | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk
Quoted 6 lines

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.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140129/0418092d/attachment.pgp>
#3 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

In reply to Andreas Färber
Quoted 22 lines · Andreas F?rber

Hi,

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 12 lines

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.

Quoted 6 lines
---
 arch/arm/cpu/arm1176/bcm2835/config.mk | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk
Quoted 2 lines

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.

#4 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

Am 29.01.2014 19:38, schrieb Stephen Warren:

Quoted 21 lines · Andreas F?rber
Quoted 20 lines

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 18 lines

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.

---
 arch/arm/cpu/arm1176/bcm2835/config.mk | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk
Quoted 8 lines
Quoted 2 lines

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

Signature · 2 lines
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imend?rffer; HRB 16746 AG N?rnberg
#5 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 31 lines · Andreas F?rber

Am 29.01.2014 19:38, schrieb Stephen Warren:

Quoted 21 lines · Andreas F?rber
Quoted 20 lines

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 18 lines

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.

Warren <[email protected]> --- arch/arm/cpu/arm1176/bcm2835/config.mk | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk

Quoted 8 lines
Quoted 2 lines

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.

Quoted 3 lines

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.

Quoted 6 lines

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

#6 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 29.01.2014 20:47, schrieb Tom Rini:

Quoted 34 lines · Andreas F?rber
Quoted 32 lines

Am 29.01.2014 19:38, schrieb Stephen Warren:

Quoted 31 lines · Andreas F?rber
Quoted 15 lines

Am 29.01.2014 06:42, schrieb Stephen Warren:

Quoted 14 lines

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.

Quoted 8 lines
Quoted 5 lines

Stephen Warren <[email protected]> --- 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.

Quoted 5 lines
Quoted 3 lines

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.

Quoted 7 lines
Quoted 6 lines

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.

Quoted 5 lines

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

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

#7 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

In reply to Stephen Warren
Quoted 11 lines · 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.

Albert, does this look good?

#8 lore raw

PATCH 1/1 ARM: bcm2835: config.mk isn't needed

In reply to Stephen Warren

Hi Stephen,

Quoted 34 lines · 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.

---
 arch/arm/cpu/arm1176/bcm2835/config.mk | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1176/bcm2835/config.mk
arch/arm/cpu/arm1176/bcm2835/config.mk deleted +0 -9
deleted file mode 100644
index b87ce24..0000000
@@ -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.

arch/arm/cpu/arm1176/bcm2835/config.mk line 19

Quoted 10 lines
arch/arm/cpu/arm1176/bcm2835/config.mk deleted +0 -10
-#
-# 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,

Signature · 1 line
Albert.