Skip to contentSkip to conversation

Revert "configs/stm32f429: force usage of binutils 2.28.x"

PATCH Superseded Christophe PRIOUZEAU 3 participants 14 messages May 31, 2018 Arm STM32

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 Revert "configs/stm32f429: force usage of binutils 2.28.x"

This reverts commit cbe43fd417d77f846f1ca47cdacd51a73be1aaec.

---
 configs/stm32f429_disco_defconfig | 1 -
 1 file changed, 1 deletion(-)
configs/stm32f429_disco_defconfig +0 -1
index fc167d0..5237e9a 100644
@@ -2,7 +2,6 @@ BR2_arm=y
 BR2_cortex_m4=y
 BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches"
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
-BR2_BINUTILS_VERSION_2_28_X=y
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
Signature · 1 line
2.7.4
#1 lore raw

PATCH 2/4 Revert "configs/stm32f469: force usage of binutils 2.28.x"

This reverts commit 12049cc8b8972a9d0f1e27f1382cc5752d45312f.

---
 configs/stm32f469_disco_defconfig | 1 -
 1 file changed, 1 deletion(-)
configs/stm32f469_disco_defconfig +0 -1
index e5cacaf..8b77d8c 100644
@@ -2,7 +2,6 @@ BR2_arm=y
 BR2_cortex_m4=y
 BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches"
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
-BR2_BINUTILS_VERSION_2_28_X=y
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
Signature · 1 line
2.7.4
#2 lore raw

PATCH 3/4 package/binutils: Cortex-M targets require version <2.29

In reply to Christophe PRIOUZEAU

From: Laurent GONZALEZ <[email protected]>

binutils 2.29 changed the implementation of adr pseudo instruction it breaks linux kernel and impacts Cortex-M targets (eg. stm32)

---
 package/binutils/Config.in.host | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
package/binutils/Config.in.host +3 -2
index 03b2281..9a4caad 100644
@@ -2,8 +2,9 @@ comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	default BR2_BINUTILS_VERSION_2_29_X if !BR2_arc
-	default BR2_BINUTILS_VERSION_ARC if BR2_arc
+	default BR2_BINUTILS_VERSION_2_28_X if BR2_ARM_CPU_ARMV7M
+	default BR2_BINUTILS_VERSION_2_29_X if !BR2_arc && !BR2_ARM_CPU_ARMV7M
+	default BR2_BINUTILS_VERSION_ARC if BR2_arc && !BR2_ARM_CPU_ARMV7M
 	help
 	  Select the version of binutils you wish to use.
 
Signature · 1 line
2.7.4
#3 lore raw

PATCH 4/4 linux: config.in: add comment for Arm Cortex-M

In reply to Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +4 -0
index 73a3299..fbd886c 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M
+	depends on BR2_BINUTILS_VERSION_2_28_X
+
 # Packages that need to have a kernel with support for loadable modules,
 # but do not use the kernel-modules infrastructure, should select that
 # option.
Signature · 1 line
2.7.4
#4 lore raw

PATCH 4/4 linux: config.in: add comment for Arm Cortex-M

Quoted 16 lines · Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +0 -0
index 73a3299..fbd886c 100644

linux/Config.in config BR2_LINUX_KERNEL · line 13

Quoted 6 lines
linux/Config.in +3 -0
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M
+	depends on BR2_BINUTILS_VERSION_2_28_X

The logic is inverted here: it should be

	depends on BR2_ARMV7M
	depends on !BR2_BINUTILS_VERSION_2_28_X

I guess you didn't test it?

Regards,
Arnout

Quoted 5 lines
linux/Config.in +1 -0
+
 # Packages that need to have a kernel with support for loadable modules,
 # but do not use the kernel-modules infrastructure, should select that
 # option.
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#5 lore raw

PATCH 4/4 linux: config.in: add comment for Arm Cortex-M

On 05/31/2018 01:39 PM, Arnout Vandecappelle wrote:

On 31-05-18 12:17, Christophe PRIOUZEAU wrote:

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +3 -0
index 73a3299..fbd886c 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+       depends on !BR2_ARMV7M
+       depends on BR2_BINUTILS_VERSION_2_28_X
 
 
 

The logic is inverted here: it should be

depends on BR2_ARMV7M
depends on !BR2_BINUTILS_VERSION_2_28_X

I guess you didn't test it?

Sorry, I have made the test with the patch on binutils/config.in, and I have inverted the value. It's my fault.

Regards,
Arnout

+
# Packages that need to have a kernel with support for loadable modules,

 # but do not use the kernel-modules infrastructure, should select that
 # option.

Regards
Christophe
--

Best regards / Cordialement,

[cid:part1.6C50213D.8A91E88A at st.com] Christophe Priouzeau | TINA: 166 7320 | Tel: +33 244027320

STMicroelectronics
ST oneline: www.st.com<http://www.st.com>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180531/202a86fd/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: st_mail.png
Type: image/png
Size: 9916 bytes
Desc: st_mail.png
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180531/202a86fd/attachment.png>

#6 lore raw

PATCH 4/4 linux: config.in: add comment for Arm Cortex-M

In reply to Arnout Vandecappelle

Hello,

On 05/31/2018 01:39 PM, Arnout Vandecappelle wrote:

On 31-05-18 12:17, Christophe PRIOUZEAU wrote:

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +3 -0
index 73a3299..fbd886c 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+       depends on !BR2_ARMV7M
+       depends on BR2_BINUTILS_VERSION_2_28_X
 
 
 

The logic is inverted here: it should be

depends on BR2_ARMV7M
depends on !BR2_BINUTILS_VERSION_2_28_X

I guess you didn't test it?

After, new test:
$> grep BINUTILS_VERSION_2_29 .config
BR2_BINUTILS_VERSION_2_29_X=y
The depends must be
depends on !BR2_ARMV7M
depends on !BR2_BINUTILS_VERSION_2_28_X
I will update the patch.

Regards,
Arnout

+
# Packages that need to have a kernel with support for loadable modules,

 # but do not use the kernel-modules infrastructure, should select that
 # option.

Regards
Christophe
--

Best regards / Cordialement,

[cid:part1.979821E0.7643D799 at st.com] Christophe Priouzeau | TINA: 166 7320 | Tel: +33 244027320

STMicroelectronics
ST oneline: www.st.com<http://www.st.com>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180531/95304a4a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: st_mail.png
Type: image/png
Size: 9916 bytes
Desc: st_mail.png
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180531/95304a4a/attachment.png>

#7 lore raw

PATCH v2 1/4 Revert "configs/stm32f429: force usage of binutils 2.28.x"

In reply to Christophe PRIOUZEAU

This reverts commit cbe43fd417d77f846f1ca47cdacd51a73be1aaec.

---
 configs/stm32f429_disco_defconfig | 1 -
 1 file changed, 1 deletion(-)
configs/stm32f429_disco_defconfig +0 -1
index fc167d0..5237e9a 100644
@@ -2,7 +2,6 @@ BR2_arm=y
 BR2_cortex_m4=y
 BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches"
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
-BR2_BINUTILS_VERSION_2_28_X=y
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
Signature · 1 line
2.7.4
#8 lore raw

PATCH v2 2/4 Revert "configs/stm32f469: force usage of binutils 2.28.x"

This reverts commit 12049cc8b8972a9d0f1e27f1382cc5752d45312f.

---
 configs/stm32f469_disco_defconfig | 1 -
 1 file changed, 1 deletion(-)
configs/stm32f469_disco_defconfig +0 -1
index e5cacaf..8b77d8c 100644
@@ -2,7 +2,6 @@ BR2_arm=y
 BR2_cortex_m4=y
 BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches"
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
-BR2_BINUTILS_VERSION_2_28_X=y
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
Signature · 1 line
2.7.4
#9 lore raw

PATCH v2 3/4 package/binutils: Cortex-M targets require version <2.29

In reply to Christophe PRIOUZEAU

From: Laurent GONZALEZ <[email protected]>

binutils 2.29 changed the implementation of adr pseudo instruction it breaks linux kernel and impacts Cortex-M targets (eg. stm32)

---
 package/binutils/Config.in.host | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
package/binutils/Config.in.host +3 -2
index 03b2281..9a4caad 100644
@@ -2,8 +2,9 @@ comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	default BR2_BINUTILS_VERSION_2_29_X if !BR2_arc
-	default BR2_BINUTILS_VERSION_ARC if BR2_arc
+	default BR2_BINUTILS_VERSION_2_28_X if BR2_ARM_CPU_ARMV7M
+	default BR2_BINUTILS_VERSION_2_29_X if !BR2_arc && !BR2_ARM_CPU_ARMV7M
+	default BR2_BINUTILS_VERSION_ARC if BR2_arc && !BR2_ARM_CPU_ARMV7M
 	help
 	  Select the version of binutils you wish to use.
 
Signature · 1 line
2.7.4
#10 lore raw

PATCH v2 4/4 linux: config.in: add comment for Arm Cortex-M

In reply to Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
Changes v1 -> v2
- correct depends on for comment

 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +4 -0
index 73a3299..04d4548 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M
+	depends on !BR2_BINUTILS_VERSION_2_28_X
+
 # Packages that need to have a kernel with support for loadable modules,
 # but do not use the kernel-modules infrastructure, should select that
 # option.
Signature · 1 line
2.7.4
#11 lore raw

PATCH v2 4/4 linux: config.in: add comment for Arm Cortex-M

Hello Christophe,

Thanks for coming up with a patch series for this issue.

Quoted 19 lines · Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
Changes v1 -> v2
- correct depends on for comment

 linux/Config.in | 4 ++++
 1 file changed, 4 insertions(+)
linux/Config.in +0 -0
index 73a3299..04d4548 100644

linux/Config.in config BR2_LINUX_KERNEL · line 12

Quoted 5 lines
linux/Config.in +2 -0
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
 if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M

So this comment will never appear on ARMv7M, which is exactly the opposite of what we want. Did you test this ? Did you verify that the comment actually appears when expected ?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
#12 lore raw

PATCH v2 4/4 linux: config.in: add comment for Arm Cortex-M

Quoted 25 lines · Thomas Petazzoni

Hello Christophe,

Thanks for coming up with a patch series for this issue.

Quoted 20 lines · Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
Changes v1 -> v2
- correct depends on for comment

  linux/Config.in | 4 ++++
  1 file changed, 4 insertions(+)
linux/Config.in +0 -0
index 73a3299..04d4548 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
Quoted 7 lines

linux/Config.in config BR2_LINUX_KERNEL · line 12

Quoted 4 lines
linux/Config.in +2 -0
  if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M

So this comment will never appear on ARMv7M, which is exactly the opposite of what we want. Did you test this ? Did you verify that the comment actually appears when expected ?

Ok, I have made a bad copy/paste from the proposition of Arnoult and is why the depends of !BR2_ARMV7M are always true (it's not defined), the correct
tag are "BR2_ARM_CPU_ARMV7M".
Sorry, I started to send a new series.

Quoted 4 lines

Best regards,

Thomas

Regards
Christophe

#13 lore raw

PATCH v2 4/4 linux: config.in: add comment for Arm Cortex-M

Hello,

Quoted 33 lines · Christophe PRIOUZEAU
Quoted 25 lines · Thomas Petazzoni

Hello Christophe,

Thanks for coming up with a patch series for this issue.

Quoted 20 lines · Christophe PRIOUZEAU

When binutils > 2.28 are selected on Arm Cortex-M cpu, linux kernel does not boot due to a new implementation of 'adr pseudo instruction' on binutils.

Bugzilla thread: https://bugs.busybox.net/show_bug.cgi?id=11051

---
Changes v1 -> v2
- correct depends on for comment

  linux/Config.in | 4 ++++
  1 file changed, 4 insertions(+)
linux/Config.in +0 -0
index 73a3299..04d4548 100644
@@ -8,6 +8,10 @@ config BR2_LINUX_KERNEL
 
Quoted 7 lines

linux/Config.in config BR2_LINUX_KERNEL · line 12

Quoted 4 lines
linux/Config.in +2 -0
  if BR2_LINUX_KERNEL
 
+comment "Linux kernel will not boot with binutils >= 2.29"
+	depends on !BR2_ARMV7M  

So this comment will never appear on ARMv7M, which is exactly the opposite of what we want. Did you test this ? Did you verify that the comment actually appears when expected ?

Quoted 5 lines

Ok, I have made a bad copy/paste from the proposition of Arnoult and is why the depends of !BR2_ARMV7M are always true (it's not defined), the correct
tag are "BR2_ARM_CPU_ARMV7M".
Sorry, I started to send a new series.

This was indeed one problem. But the other problem is that the condition is inverted, it should be:

depends on <we are on ARMv7M>

and not:

depends on !<we are on ARMv7M>

Indeed, we want the comment to be visible when we are on ARMv7M, and invisible in all other cases.

Please test your change by running menuconfig and making sure that the comment is visible vs. invisible as expected.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com