Skip to contentSkip to conversation

binutils: Allow upstream 2.29 to be chosen for ARC

PATCH Superseded Alexey Brodkin 2 participants 2 messages Nov 10, 2017 – Nov 29, 2017

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 binutils: Allow upstream 2.29 to be chosen for ARC

As of today quite a lot of ARC stuff got merged in upsream such that we may finally use upstream realease for building and even running Linux kernel and rootfs built with vanilla binutils.

Essentially upstream release is still a bit behind our GitHub-based releases but let's try to use vanilla version and if we're lucky enough with just a small set of back-ported patches we'll be able to use vanilla release(s) for everything in Buildroot.

Cc Arnout Vandecappelle (Essensium/Mind) <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>

---

Changes v1->v2:

* Use positive logic on selection of ARC tools in binutils.mk (Arnout)

 package/binutils/Config.in.host | 11 ++++++++---
 package/binutils/binutils.mk    |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)
package/binutils/Config.in.host +8 -3
index 95144c8..4a2992a 100644
@@ -2,8 +2,8 @@ comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	default BR2_BINUTILS_VERSION_2_28_X
-	depends on !BR2_arc
+	default BR2_BINUTILS_VERSION_2_28_X if !BR2_arc
+	default BR2_BINUTILS_VERSION_ARC if BR2_arc
 	help
 	  Select the version of binutils you wish to use.
 
@@ -11,18 +11,23 @@ config BR2_BINUTILS_VERSION_2_27_X
 	bool "binutils 2.27"
 	# binutils 2.27 triggers a bug in elf2flt on ARM/noMMU
 	depends on !(BR2_arm && !BR2_USE_MMU)
+	depends on !BR2_arc
 
 config BR2_BINUTILS_VERSION_2_28_X
 	bool "binutils 2.28.1"
+	depends on !BR2_arc
 
 config BR2_BINUTILS_VERSION_2_29_X
 	bool "binutils 2.29.1"
 
+config BR2_BINUTILS_VERSION_ARC
+	bool "binutils arc (2.29)"
+	depends on BR2_arc
 endchoice
 
 config BR2_BINUTILS_VERSION
 	string
-	default "arc-2017.09-release"	if BR2_arc
+	default "arc-2017.09-release"	if BR2_BINUTILS_VERSION_ARC
 	default "2.27"		if BR2_BINUTILS_VERSION_2_27_X
 	default "2.28.1"	if BR2_BINUTILS_VERSION_2_28_X
 	default "2.29.1"	if BR2_BINUTILS_VERSION_2_29_X
package/binutils/binutils.mk +1 -1
index d2bf5b9..e802952 100644
@@ -15,7 +15,7 @@ BINUTILS_VERSION = 2.28.1
 endif
 endif # BINUTILS_VERSION
 
-ifeq ($(BR2_arc),y)
+ifeq ($(BR2_BINUTILS_VERSION_ARC),y)
 BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))
 BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
 BINUTILS_FROM_GIT = y
Signature · 1 line
2.10.2
#1 lore raw

PATCH v2 1/1 binutils: Allow upstream 2.29 to be chosen for ARC

Hello,

Quoted 10 lines · Alexey Brodkin

As of today quite a lot of ARC stuff got merged in upsream such that we may finally use upstream realease for building and even running Linux kernel and rootfs built with vanilla binutils.

Essentially upstream release is still a bit behind our GitHub-based releases but let's try to use vanilla version and if we're lucky enough with just a small set of back-ported patches we'll be able to use vanilla release(s) for everything in Buildroot.

Quoted 4 lines
Cc Arnout Vandecappelle (Essensium/Mind) <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>

Thanks, I've applied to next, but I had to do a change to avoid a build failure. See below.

package/binutils/binutils.mk BINUTILS_VERSION = 2.28.1 · line 18

Quoted 10 lines
package/binutils/binutils.mk +1 -1
index d2bf5b9..e802952 100644
@@ -15,7 +15,7 @@ BINUTILS_VERSION = 2.28.1
 endif
 endif # BINUTILS_VERSION
 
-ifeq ($(BR2_arc),y)
+ifeq ($(BR2_BINUTILS_VERSION_ARC),y)

The symbol BR2_BINUTILS_VERSION_ARC doesn't exist when you're using an external toolchain. Still, the target variant of binutils can be built, and in this case, on ARC, the Synopsys version is used. From binutils.mk:

ifeq ($(BINUTILS_VERSION),)
ifeq ($(BR2_arc),y)
BINUTILS_VERSION = arc-2017.09-release
else
BINUTILS_VERSION = 2.28.1
endif
endif # BINUTILS_VERSION

So, instead of testing BR2_BINUTILS_VERSION_ARC, I've changed to:

ifeq ($(BINUTILS_VERSION),arc-2017.09-release)

BINUTILS_VERSION is either defined by BR2_BINUTILS_VERSION from package/binutils/Config.in.host (when a cross-binutils is built for an internal toolchain) *or* it is defined from binutils.mk when building a target binutils in an external toolchain context.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com