Upgrade ARC port to new toolchain
v2 cover Upgrade ARC port to new toolchain
These three patches upgrade the ARC toolchain to GCC 4.8 and Binutils 2.23.2. This fixes multiple issues (including most autobuilder failures from the past couple of weeks).
v2:
* Remove gcc 4.4.7 patch
* Fix whitespace in fix_branch_out_of_range.patch
* Remove binutils 2.19-arc dependencies (not required anymore)
* Fix gcc 4.8-arc dependencies (host-flex, host-bison still required :-( )
Mischa Jonker (3):
uclibc, eglibc: remove REALLY_NOSTDLIB references
arc: binutils: Go from 2.19-arc to 2.23.2-arc
arc: gcc: Go from 4.4.7 to 4.8 for ARC
.../binutils/2.19-arc/add-empty-info-files.patch | 72 ----------
package/binutils/Config.in.host | 2 +-
package/binutils/binutils.mk | 4 -
package/eglibc/eglibc.mk | 2 +-
package/gcc/4.8-arc/100-uclibc-conf.patch | 15 ++
package/gcc/4.8-arc/301-missing-execinfo_h.patch | 13 ++
package/gcc/4.8-arc/302-c99-snprintf.patch | 13 ++
.../gcc/4.8-arc/305-libmudflap-susv3-legacy.patch | 49 +++++++
package/gcc/4.8-arc/disable_gc_sections.patch | 145 ++++++++++++++++++++
.../fix_branch_out_of_range.patch | 2 +-
package/gcc/Config.in.host | 13 +-
package/gcc/gcc.mk | 2 +-
package/uclibc/uclibc.mk | 11 +-
13 files changed, 248 insertions(+), 95 deletions(-)
delete mode 100644 package/binutils/2.19-arc/add-empty-info-files.patch
create mode 100644 package/gcc/4.8-arc/100-uclibc-conf.patch
create mode 100644 package/gcc/4.8-arc/301-missing-execinfo_h.patch
create mode 100644 package/gcc/4.8-arc/302-c99-snprintf.patch
create mode 100644 package/gcc/4.8-arc/305-libmudflap-susv3-legacy.patch
create mode 100644 package/gcc/4.8-arc/disable_gc_sections.patch
rename package/gcc/{4.4.7-arc => 4.8-arc}/fix_branch_out_of_range.patch (96%)Signature · 1 line
1.7.9.5
PATCH v2 1/3 uclibc, eglibc: remove REALLY_NOSTDLIB references
These were required with ARC gcc 4.4.7; ARC gcc 4.8 has been changed to behave the same as other architectures with -nostdlib, making this option obsolete.
--- package/eglibc/eglibc.mk | 2 +- package/uclibc/uclibc.mk | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-)
package/eglibc/eglibc.mk +1 -1
@@ -61,7 +61,7 @@ define EGLIBC_CONFIGURE_CMDS cp $(@D)/build/csu/crt1.o $(STAGING_DIR)/usr/lib/ cp $(@D)/build/csu/crti.o $(STAGING_DIR)/usr/lib/ cp $(@D)/build/csu/crtn.o $(STAGING_DIR)/usr/lib/ - $(TARGET_CROSS)gcc -nostdlib $(REALLY_NOSTDLIB) \ + $(TARGET_CROSS)gcc -nostdlib \ -nostartfiles -shared -x c /dev/null -o $(STAGING_DIR)/usr/lib/libc.so endef
package/uclibc/uclibc.mk +2 -9
@@ -163,13 +163,6 @@ endef endif # -# ARC definitions -# -ifeq ($(UCLIBC_TARGET_ARCH),arc) -REALLY_NOSTDLIB = -really-nostdlib -endif - -# # Endianess #
@@ -407,9 +400,9 @@ define UCLIBC_CONFIGURE_CMDS RUNTIME_PREFIX=$(STAGING_DIR) \ headers lib/crt1.o lib/crti.o lib/crtn.o \ install_headers - $(TARGET_CROSS)gcc -nostdlib $(REALLY_NOSTDLIB) \ + $(TARGET_CROSS)gcc -nostdlib \ -nostartfiles -shared -x c /dev/null -o $(STAGING_DIR)/usr/lib/libc.so - $(TARGET_CROSS)gcc -nostdlib $(REALLY_NOSTDLIB) \ + $(TARGET_CROSS)gcc -nostdlib \ -nostartfiles -shared -x c /dev/null -o $(STAGING_DIR)/usr/lib/libm.so cp -pLR $(UCLIBC_DIR)/lib/crt[1in].o $(STAGING_DIR)/usr/lib/ endef
Signature · 1 line
1.7.9.5
PATCH v2 2/3 arc: binutils: Go from 2.19-arc to 2.23.2-arc
In reply to Mischa Jonker--- .../binutils/2.19-arc/add-empty-info-files.patch | 72 -------------------- package/binutils/Config.in.host | 2 +- package/binutils/binutils.mk | 4 -- 3 files changed, 1 insertion(+), 77 deletions(-) delete mode 100644 package/binutils/2.19-arc/add-empty-info-files.patch
package/binutils/2.19-arc/add-empty-info-files.patch deleted +0 -72
@@ -1,72 +0,0 @@ -binutils: add empty info files to remove makeinfo dependency - -Signed-off-by: Mischa jonker <[email protected]> ---- - bfd/doc/bfd.info | 1 + - binutils/doc/binutils.info | 1 + - etc/configure.info | 1 + - etc/standards.info | 1 + - gas/doc/as.info | 1 + - gprof/gprof.info | 1 + - ld/ld.info | 1 + - 7 files changed, 7 insertions(+), 0 deletions(-) - create mode 100644 bfd/doc/bfd.info - create mode 100644 binutils/doc/binutils.info - create mode 100644 etc/configure.info - create mode 100644 etc/standards.info - create mode 100644 gas/doc/as.info - create mode 100644 gprof/gprof.info - create mode 100644 ld/ld.info - -diff --git a/bfd/doc/bfd.info b/bfd/doc/bfd.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/bfd/doc/bfd.info -@@ -0,0 +1 @@ -+ -diff --git a/binutils/doc/binutils.info b/binutils/doc/binutils.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/binutils/doc/binutils.info -@@ -0,0 +1 @@ -+ -diff --git a/etc/configure.info b/etc/configure.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/etc/configure.info -@@ -0,0 +1 @@ -+ -diff --git a/etc/standards.info b/etc/standards.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/etc/standards.info -@@ -0,0 +1 @@ -+ -diff --git a/gas/doc/as.info b/gas/doc/as.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/gas/doc/as.info -@@ -0,0 +1 @@ -+ -diff --git a/gprof/gprof.info b/gprof/gprof.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/gprof/gprof.info -@@ -0,0 +1 @@ -+ -diff --git a/ld/ld.info b/ld/ld.info -new file mode 100644 -index 0000000..8b13789 ---- /dev/null -+++ b/ld/ld.info -@@ -0,0 +1 @@ -+ --- -1.7.0.4 -
package/binutils/Config.in.host +1 -1
@@ -44,7 +44,7 @@ endchoice config BR2_BINUTILS_VERSION string default "2.18-avr32-1.0.1" if BR2_BINUTILS_VERSION_2_18_AVR32_1_0_1 - default "2.19-arc" if BR2_arc + default "2.23.2-arc" if BR2_arc default "2.20.1" if BR2_BINUTILS_VERSION_2_20_1 default "2.21" if BR2_BINUTILS_VERSION_2_21 default "2.21.1" if BR2_BINUTILS_VERSION_2_21_1
package/binutils/binutils.mk +0 -4
@@ -55,11 +55,7 @@ HOST_BINUTILS_CONF_OPT = --disable-multilib --disable-werror \ --with-sysroot=$(STAGING_DIR) \ $(BINUTILS_EXTRA_CONFIG_OPTIONS) -ifeq ($(BINUTILS_VERSION),2.19-arc) -HOST_BINUTILS_DEPENDENCIES = host-flex host-bison -else HOST_BINUTILS_DEPENDENCIES = -endif # We just want libbfd and libiberty, not the full-blown binutils in staging define BINUTILS_INSTALL_STAGING_CMDS
Signature · 1 line
1.7.9.5
PATCH v2 3/3 arc: gcc: Go from 4.4.7 to 4.8 for ARC
In reply to Mischa JonkerThis fixes multiple issues, including:
- 'operand out of range' errors (due to defaulting to medium calls instead of short calls)
- library dependencies that were not being found
---
package/gcc/4.8-arc/100-uclibc-conf.patch | 15 ++
package/gcc/4.8-arc/301-missing-execinfo_h.patch | 13 ++
package/gcc/4.8-arc/302-c99-snprintf.patch | 13 ++
.../gcc/4.8-arc/305-libmudflap-susv3-legacy.patch | 49 +++++++
package/gcc/4.8-arc/disable_gc_sections.patch | 145 ++++++++++++++++++++
.../fix_branch_out_of_range.patch | 2 +-
package/gcc/Config.in.host | 13 +-
package/gcc/gcc.mk | 2 +-
8 files changed, 244 insertions(+), 8 deletions(-)
create mode 100644 package/gcc/4.8-arc/100-uclibc-conf.patch
create mode 100644 package/gcc/4.8-arc/301-missing-execinfo_h.patch
create mode 100644 package/gcc/4.8-arc/302-c99-snprintf.patch
create mode 100644 package/gcc/4.8-arc/305-libmudflap-susv3-legacy.patch
create mode 100644 package/gcc/4.8-arc/disable_gc_sections.patch
rename package/gcc/{4.4.7-arc => 4.8-arc}/fix_branch_out_of_range.patch (96%)package/gcc/4.8-arc/100-uclibc-conf.patch new file +15 -0
@@ -0,0 +1,15 @@ +Index: gcc-4.8.0/contrib/regression/objs-gcc.sh +=================================================================== +--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh 2009-04-09 17:00:19.000000000 +0200 ++++ gcc-4.8.0/contrib/regression/objs-gcc.sh 2013-03-23 17:39:04.000000000 +0100 +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1
package/gcc/4.8-arc/301-missing-execinfo_h.patch new file +13 -0
@@ -0,0 +1,13 @@ +Index: gcc-4.8.0/boehm-gc/include/gc.h +=================================================================== +--- gcc-4.8.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200 ++++ gcc-4.8.0/boehm-gc/include/gc.h 2013-03-23 17:39:20.000000000 +0100 +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include <features.h> + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif
package/gcc/4.8-arc/302-c99-snprintf.patch new file +13 -0
@@ -0,0 +1,13 @@ +Index: gcc-4.8.0/libstdc++-v3/include/c_global/cstdio +=================================================================== +--- gcc-4.8.0.orig/libstdc++-v3/include/c_global/cstdio 2013-02-03 18:54:05.000000000 +0100 ++++ gcc-4.8.0/libstdc++-v3/include/c_global/cstdio 2013-03-23 17:39:32.000000000 +0100 +@@ -138,7 +138,7 @@ + using ::vsprintf; + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if _GLIBCXX_USE_C99 || defined __UCLIBC__ + + #undef snprintf + #undef vfscanf
package/gcc/4.8-arc/305-libmudflap-susv3-legacy.patch new file +49 -0
49 lines not on this page · raw message
package/gcc/4.8-arc/disable_gc_sections.patch new file +145 -0
145 lines not on this page · raw message
package/gcc/4.8-arc/fix_branch_out_of_range.patch renamed from package/gcc/4.4.7-arc/fix_branch_out_of_range.patch +1 -1
@@ -24,7 +24,7 @@ index ff602c0..b3ca4c4 100644 if (op0 != cmp0) cc_clob_rtx = gen_rtx_REG (CC_ZNmode, CC_REG); - else if ((offset >= -140 && offset < 140) -+ else if ((offset >= -120 && offset < 120) ++ else if ((offset >= -120 && offset < 120) && rtx_equal_p (op1, const0_rtx) && compact_register_operand (op0, VOIDmode) && (GET_CODE (op) == EQ
package/gcc/Config.in.host +7 -6
@@ -7,15 +7,11 @@ choice prompt "GCC compiler Version" default BR2_GCC_VERSION_4_4_X if BR2_sparc_sparchfleon || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleon || BR2_sparc_sparcsfleonv8 default BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 if BR2_avr32 - default BR2_GCC_VERSION_4_4_7_ARC if BR2_arc + default BR2_GCC_VERSION_4_8_ARC if BR2_arc default BR2_GCC_VERSION_4_7_X help Select the version of gcc you wish to use. - config BR2_GCC_VERSION_4_4_7_ARC - depends on BR2_arc - bool "gcc 4.4.7-arc" - config BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 depends on BR2_avr32 bool "gcc 4.2.2-avr32-2.1.5"
@@ -55,6 +51,11 @@ choice select BR2_GCC_NEEDS_MPC bool "gcc 4.8.x" + config BR2_GCC_VERSION_4_8_ARC + depends on BR2_arc + select BR2_GCC_NEEDS_MPC + bool "gcc 4.8-arc" + config BR2_GCC_VERSION_SNAP depends on !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 select BR2_GCC_NEEDS_MPC
@@ -84,11 +85,11 @@ config BR2_GCC_VERSION default "4.2.2-avr32-2.1.5" if BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 default "4.3.6" if BR2_GCC_VERSION_4_3_X default "4.4.7" if BR2_GCC_VERSION_4_4_X - default "4.4.7-arc" if BR2_GCC_VERSION_4_4_7_ARC default "4.5.4" if BR2_GCC_VERSION_4_5_X default "4.6.4" if BR2_GCC_VERSION_4_6_X default "4.7.3" if BR2_GCC_VERSION_4_7_X default "4.8.1" if BR2_GCC_VERSION_4_8_X + default "4.8-arc" if BR2_GCC_VERSION_4_8_ARC default $BR2_GCC_SNAP_DATE if BR2_GCC_VERSION_SNAP config BR2_EXTRA_GCC_CONFIG_OPTIONS
package/gcc/gcc.mk +1 -1
@@ -133,7 +133,7 @@ HOST_GCC_COMMON_DEPENDENCIES += host-mpc HOST_GCC_COMMON_CONF_OPT += --with-mpc=$(HOST_DIR)/usr endif -ifeq ($(BR2_GCC_VERSION_4_4_7_ARC),y) +ifeq ($(BR2_arc),y) HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison endif
Signature · 1 line
1.7.9.5
v2 cover Upgrade ARC port to new toolchain
In reply to Mischa JonkerDear Mischa Jonker,
Quoted 3 lines · Mischa Jonker
These three patches upgrade the ARC toolchain to GCC 4.8 and Binutils 2.23.2. This fixes multiple issues (including most autobuilder failures from the past couple of weeks).
Thanks!
While you're at it, have you followed the recent changes on floating point support for ARM? How does floating point support works on ARC? Completely soft-float? Hard float is possible? Always the same FPU?
Thanks!
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
v2 cover Upgrade ARC port to new toolchain
Hi Thomas,
Quoted 2 lines
While you're at it, have you followed the recent changes on floating point support for ARM?
I saw the mails, but I haven't studied them in detail.
Quoted 2 lines
How does floating point support works on ARC?
Completely soft-float? Hard float is possible? Always the same FPU?
For the current generation of cores (ARC700 series for Linux) we do not really have an 'FPU'. The ARC cores have the possibility of adding various extensions, and for floating point we happen to have 4 different kinds of extensions: spfp-compact, dpfp-compact, spfp-fast, dpfp-fast. In reality, these are just ADD, SUB and MUL instructions, the rest still needs to happen in software. The single and double precision extensions can be combined so both are supported in the same core. The fast and compact variants relate to the speed and the number of gates/area; I think they share the same opcode space.
I think right now it is more important to focus on getting most packages to build; after that I will look into the best way to make a toolchain + libraries tailored to the exact core configuration: the FPU is not the only thing that is configurable; you can have a variable set of registers, different types of multipliers, etc, etc.
If I were to add this configurability somewhere, do you think that CTNG would be the right place, or Buildroot?
Thanks,
Mischa
v2 cover Upgrade ARC port to new toolchain
In reply to Mischa JonkerQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Mischa" == Mischa Jonker <[email protected]> writes:
Mischa> These three patches upgrade the ARC toolchain to GCC 4.8 and Mischa> Binutils 2.23.2. This fixes multiple issues (including most Mischa> autobuilder failures from the past couple of weeks).
Mischa> v2:
Mischa> * Remove gcc 4.4.7 patch Mischa> * Fix whitespace in fix_branch_out_of_range.patch Mischa> * Remove binutils 2.19-arc dependencies (not required anymore) Mischa> * Fix gcc 4.8-arc dependencies (host-flex, host-bison still required :-( )
Committed series, thanks.
Signature · 1 line
Bye, Peter Korsgaard