Browse Source

toolchain/arc: update to the most recent release arc-2017.09

This commit finally bumps ARC tools to the most recent arc-2017.09 release version.

ARC GNU tools of version arc-2017.09 bring some quite significant changes like:
 * Binutils v2.29 with additional ARC patches
 * GCC 7.1.1 with additional ARC patches

More information on this release could be found here:
  https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2017.09-release

Signed-off-by: Evgeniy Didin <[email protected]>
CC: Alexey Brodkin <[email protected]>
CC: John Crispin <[email protected]>
Evgeniy Didin 8 years ago
parent
commit
e47fe3284f
37 changed files with 345 additions and 292 deletions
  1. 3 3
      package/devel/gdb-arc/Makefile
  2. 4 4
      toolchain/binutils/Config.in
  3. 2 2
      toolchain/binutils/Config.version
  4. 3 3
      toolchain/binutils/Makefile
  5. 4 4
      toolchain/gcc/Config.in
  6. 4 4
      toolchain/gcc/Config.version
  7. 4 4
      toolchain/gcc/common.mk
  8. 0 13
      toolchain/gcc/patches/arc-2017.03-release/230-musl_libssp.patch
  9. 0 36
      toolchain/gcc/patches/arc-2017.03-release/280-musl-disable-ifunc-by-default.patch
  10. 0 11
      toolchain/gcc/patches/arc-2017.03-release/300-mips_Os_cpu_rtx_cost_model.patch
  11. 0 11
      toolchain/gcc/patches/arc-2017.03-release/800-arm_v5te_no_ldrd_strd.patch
  12. 0 13
      toolchain/gcc/patches/arc-2017.03-release/830-arm_unbreak_armv4t.patch
  13. 0 11
      toolchain/gcc/patches/arc-2017.03-release/870-ppc_no_crtsavres.patch
  14. 0 11
      toolchain/gcc/patches/arc-2017.03-release/880-no_java_section.patch
  15. 0 11
      toolchain/gcc/patches/arc-2017.03-release/881-no_tm_section.patch
  16. 0 9
      toolchain/gcc/patches/arc-2017.03-release/900-bad-mips16-crt.patch
  17. 0 11
      toolchain/gcc/patches/arc-2017.03-release/940-no-clobber-stamp-bits.patch
  18. 13 1
      toolchain/gcc/patches/arc-2017.09-release/001-revert_register_mode_search.patch
  19. 10 0
      toolchain/gcc/patches/arc-2017.09-release/002-case_insensitive.patch
  20. 13 1
      toolchain/gcc/patches/arc-2017.09-release/010-documentation.patch
  21. 28 0
      toolchain/gcc/patches/arc-2017.09-release/230-musl_libssp.patch
  22. 21 0
      toolchain/gcc/patches/arc-2017.09-release/300-mips_Os_cpu_rtx_cost_model.patch
  23. 32 0
      toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch
  24. 9 1
      toolchain/gcc/patches/arc-2017.09-release/810-arm-softfloat-libgcc.patch
  25. 11 3
      toolchain/gcc/patches/arc-2017.09-release/820-libgcc_pic.patch
  26. 10 1
      toolchain/gcc/patches/arc-2017.09-release/840-armv4_pass_fix-v4bx_to_ld.patch
  27. 9 2
      toolchain/gcc/patches/arc-2017.09-release/850-use_shared_libgcc.patch
  28. 10 0
      toolchain/gcc/patches/arc-2017.09-release/851-libgcc_no_compat.patch
  29. 18 0
      toolchain/gcc/patches/arc-2017.09-release/870-ppc_no_crtsavres.patch
  30. 22 0
      toolchain/gcc/patches/arc-2017.09-release/881-no_tm_section.patch
  31. 30 0
      toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch
  32. 17 93
      toolchain/gcc/patches/arc-2017.09-release/910-mbsd_multi.patch
  33. 8 1
      toolchain/gcc/patches/arc-2017.09-release/920-specs_nonfatal_getenv.patch
  34. 3 3
      toolchain/gcc/patches/arc-2017.09-release/930-fix-mips-noexecstack.patch
  35. 33 0
      toolchain/gcc/patches/arc-2017.09-release/940-no-clobber-stamp-bits.patch
  36. 21 22
      toolchain/gcc/patches/arc-2017.09-release/950-cpp_file_path_translation.patch
  37. 3 3
      toolchain/gdb/Makefile

+ 3 - 3
package/devel/gdb-arc/Makefile

@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 include $(TOPDIR)/rules.mk
 
 
 PKG_NAME:=gdb-arc
 PKG_NAME:=gdb-arc
-PKG_VERSION:=arc-2017.03-gdb
+PKG_VERSION:=arc-2017.09-gdb
 PKG_RELEASE:=1
 PKG_RELEASE:=1
 
 
-PKG_SOURCE:=gdb-arc-2017.03-gdb.tar.gz
+PKG_SOURCE:=gdb-arc-2017.09-gdb.tar.gz
 PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_VERSION)
 PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_VERSION)
 PKG_HASH:=6a91f86cc487c1548d3f5d4f29f7226d2019c0db8a63633aeabd5914a340f3f9
 PKG_HASH:=6a91f86cc487c1548d3f5d4f29f7226d2019c0db8a63633aeabd5914a340f3f9
 
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/binutils-gdb-arc-2017.03-gdb
+PKG_BUILD_DIR:=$(BUILD_DIR)/binutils-gdb-arc-2017.09-gdb
 
 
 PKG_BUILD_PARALLEL:=1
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 PKG_INSTALL:=1

+ 4 - 4
toolchain/binutils/Config.in

@@ -3,7 +3,7 @@
 choice
 choice
 	prompt "Binutils Version" if TOOLCHAINOPTS
 	prompt "Binutils Version" if TOOLCHAINOPTS
 	default BINUTILS_USE_VERSION_2_28 if !arc
 	default BINUTILS_USE_VERSION_2_28 if !arc
-	default BINUTILS_USE_VERSION_2_28_ARC if arc
+	default BINUTILS_USE_VERSION_2_29_ARC if arc
 	help
 	help
 	  Select the version of binutils you wish to use.
 	  Select the version of binutils you wish to use.
 
 
@@ -17,10 +17,10 @@ choice
 		bool "Binutils 2.28"
 		bool "Binutils 2.28"
 		select BINUTILS_VERSION_2_28
 		select BINUTILS_VERSION_2_28
 
 
-	config BINUTILS_USE_VERSION_2_28_ARC
+	config BINUTILS_USE_VERSION_2_29_ARC
 		depends on arc
 		depends on arc
-		bool "ARC binutils 2.28"
-		select BINUTILS_VERSION_2_28_ARC
+		bool "ARC binutils 2.29"
+		select BINUTILS_VERSION_2_29_ARC
 
 
 	config BINUTILS_USE_VERSION_2_29_1
 	config BINUTILS_USE_VERSION_2_29_1
 		depends on !arc
 		depends on !arc

+ 2 - 2
toolchain/binutils/Config.version

@@ -5,7 +5,7 @@ config BINUTILS_VERSION_2_28
 	default y if (!TOOLCHAINOPTS && !arc)
 	default y if (!TOOLCHAINOPTS && !arc)
 	bool
 	bool
 
 
-config BINUTILS_VERSION_2_28_ARC
+config BINUTILS_VERSION_2_29_ARC
 	default y if (!TOOLCHAINOPTS && arc)
 	default y if (!TOOLCHAINOPTS && arc)
 	bool
 	bool
 
 
@@ -17,4 +17,4 @@ config BINUTILS_VERSION
 	default "2.27"		       if BINUTILS_VERSION_2_27
 	default "2.27"		       if BINUTILS_VERSION_2_27
 	default "2.28"		       if BINUTILS_VERSION_2_28
 	default "2.28"		       if BINUTILS_VERSION_2_28
 	default "2.29.1"	       if BINUTILS_VERSION_2_29_1
 	default "2.29.1"	       if BINUTILS_VERSION_2_29_1
-	default "arc-2017.03"          if BINUTILS_VERSION_2_28_ARC
+	default "arc-2017.09"          if BINUTILS_VERSION_2_29_ARC

+ 3 - 3
toolchain/binutils/Makefile

@@ -25,11 +25,11 @@ ifeq ($(PKG_VERSION),2.29.1)
   PKG_HASH:=1509dff41369fb70aed23682351b663b56db894034773e6dbf7d5d6071fc55cc
   PKG_HASH:=1509dff41369fb70aed23682351b663b56db894034773e6dbf7d5d6071fc55cc
 endif
 endif
 
 
-ifneq ($(CONFIG_BINUTILS_VERSION_2_28_ARC),)
-  PKG_REV:=arc-2017.03-release
+ifneq ($(CONFIG_BINUTILS_VERSION_2_29_ARC),)
+  PKG_REV:=arc-2017.09-release
   PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_REV)/
   PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_REV)/
   PKG_SOURCE:=$(PKG_NAME)-$(PKG_REV).tar.gz
   PKG_SOURCE:=$(PKG_NAME)-$(PKG_REV).tar.gz
-  PKG_HASH:=f9c1e09ef10aaf9619181f49587f464ba0a70d29b7f6f879047140acac852409
+  PKG_HASH:=2ea086fd5521e942926dd6ff6922ce31c29ee7ffc754fca3d06385e0f27600f8
   BINUTILS_DIR:=$(PKG_NAME)-gdb-$(PKG_REV)
   BINUTILS_DIR:=$(PKG_NAME)-gdb-$(PKG_REV)
   HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(BINUTILS_DIR)
   HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(BINUTILS_DIR)
 endif
 endif

+ 4 - 4
toolchain/gcc/Config.in

@@ -2,14 +2,14 @@
 
 
 choice
 choice
 	prompt "GCC compiler Version" if TOOLCHAINOPTS
 	prompt "GCC compiler Version" if TOOLCHAINOPTS
-	default GCC_USE_VERSION_6_3_ARC if arc
+	default GCC_USE_VERSION_7_1_ARC if arc
 	default GCC_USE_VERSION_5
 	default GCC_USE_VERSION_5
 	help
 	help
 	  Select the version of gcc you wish to use.
 	  Select the version of gcc you wish to use.
 
 
-	config GCC_USE_VERSION_6_3_ARC
-		select GCC_VERSION_6_3_ARC
-		bool "gcc 6.3.x with support of ARC cores"
+	config GCC_USE_VERSION_7_1_ARC
+		select GCC_VERSION_7_1_ARC
+		bool "gcc 7.1.x with support of ARC cores"
 		depends on arc
 		depends on arc
 
 
 	config GCC_USE_VERSION_5
 	config GCC_USE_VERSION_5

+ 4 - 4
toolchain/gcc/Config.version

@@ -1,14 +1,14 @@
-config GCC_VERSION_6_3_ARC
+config GCC_VERSION_7_1_ARC
 	default y if (!TOOLCHAINOPTS && arc)
 	default y if (!TOOLCHAINOPTS && arc)
 	bool
 	bool
 
 
 config GCC_VERSION
 config GCC_VERSION
 	string
 	string
-	default "arc-2017.03-release"   if GCC_VERSION_6_3_ARC
+	default "arc-2017.09-release"   if GCC_VERSION_7_1_ARC
 	default "6.3.0"         if GCC_USE_VERSION_6
 	default "6.3.0"         if GCC_USE_VERSION_6
 	default "7.2.0"         if GCC_USE_VERSION_7
 	default "7.2.0"         if GCC_USE_VERSION_7
 	default "5.5.0"
 	default "5.5.0"
 
 
-config GCC_VERSION_6_3
+config GCC_VERSION_7_1
 	bool
 	bool
-	default y	if GCC_VERSION_6_3_ARC
+	default y	if GCC_VERSION_7_1_ARC

+ 4 - 4
toolchain/gcc/common.mk

@@ -41,12 +41,12 @@ ifeq ($(PKG_VERSION),7.2.0)
   PKG_HASH:=1cf7adf8ff4b5aa49041c8734bbcf1ad18cc4c94d0029aae0f4e48841088479a
   PKG_HASH:=1cf7adf8ff4b5aa49041c8734bbcf1ad18cc4c94d0029aae0f4e48841088479a
 endif
 endif
 
 
-ifneq ($(CONFIG_GCC_VERSION_6_3_ARC),)
-    PKG_VERSION:=6.3.0
+ifneq ($(CONFIG_GCC_VERSION_7_1_ARC),)
+    PKG_VERSION:=7.1.1
     PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/archive/$(GCC_VERSION)
     PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/archive/$(GCC_VERSION)
     PKG_SOURCE:=$(PKG_NAME)-$(GCC_VERSION).tar.gz
     PKG_SOURCE:=$(PKG_NAME)-$(GCC_VERSION).tar.gz
-    PKG_HASH:=b7223e134199b1a6f71de629da6aa845790e55d28e9892143dde09b1bc878110
-    PKG_REV:=2017.03-release
+    PKG_HASH:=90596af8b9c26a434cec0a3b3d37d0c7c755ab6a65496af6ca32529fab5a6cfe
+    PKG_REV:=2017.09-release
     GCC_DIR:=gcc-arc-$(PKG_REV)
     GCC_DIR:=gcc-arc-$(PKG_REV)
     HOST_BUILD_DIR = $(BUILD_DIR_HOST)/$(PKG_NAME)-$(GCC_VERSION)
     HOST_BUILD_DIR = $(BUILD_DIR_HOST)/$(PKG_NAME)-$(GCC_VERSION)
 endif
 endif

+ 0 - 13
toolchain/gcc/patches/arc-2017.03-release/230-musl_libssp.patch

@@ -1,13 +0,0 @@
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -858,7 +858,9 @@ proper position among the other output f
- #endif
- 
- #ifndef LINK_SSP_SPEC
--#ifdef TARGET_LIBC_PROVIDES_SSP
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#define LINK_SSP_SPEC "-lssp_nonshared"
-+#elif defined(TARGET_LIBC_PROVIDES_SSP)
- #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
- 		       "|fstack-protector-strong|fstack-protector-explicit:}"
- #else

+ 0 - 36
toolchain/gcc/patches/arc-2017.03-release/280-musl-disable-ifunc-by-default.patch

@@ -1,36 +0,0 @@
-From 450fb05e2a7510d37744f044009f8237d902f65c Mon Sep 17 00:00:00 2001
-From: nsz <nsz@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Tue, 30 Aug 2016 10:26:22 +0000
-Subject: [PATCH] disable ifunc on *-musl by default
-
-gcc/
-	* config.gcc (*-*-*musl*): Disable gnu-indirect-function.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239859 138bc75d-0d04-0410-961f-82ee72b054a4
----
- gcc/ChangeLog  | 4 ++++
- gcc/config.gcc | 4 ++--
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -1495,7 +1495,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
- 		extra_options="${extra_options} linux-android.opt"
- 		# Assume modern glibc if not targeting Android nor uclibc.
- 		case ${target} in
--		*-*-*android*|*-*-*uclibc*)
-+		*-*-*android*|*-*-*uclibc*|*-*-*musl*)
- 		  ;;
- 		*)
- 		  default_gnu_indirect_function=yes
-@@ -1564,7 +1564,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
- 		extra_options="${extra_options} linux-android.opt"
- 		# Assume modern glibc if not targeting Android nor uclibc.
- 		case ${target} in
--		*-*-*android*|*-*-*uclibc*)
-+		*-*-*android*|*-*-*uclibc*|*-*-*musl*)
- 		  ;;
- 		*)
- 		  default_gnu_indirect_function=yes

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/300-mips_Os_cpu_rtx_cost_model.patch

@@ -1,11 +0,0 @@
---- a/gcc/config/mips/mips.c
-+++ b/gcc/config/mips/mips.c
-@@ -17928,7 +17928,7 @@ mips_option_override (void)
-     flag_pcc_struct_return = 0;
- 
-   /* Decide which rtx_costs structure to use.  */
--  if (optimize_size)
-+  if (0 && optimize_size)
-     mips_cost = &mips_rtx_cost_optimize_size;
-   else
-     mips_cost = &mips_rtx_cost_data[mips_tune];

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/800-arm_v5te_no_ldrd_strd.patch

@@ -1,11 +0,0 @@
---- a/gcc/config/arm/arm.h
-+++ b/gcc/config/arm/arm.h
-@@ -166,7 +166,7 @@ extern void (*arm_lang_output_object_att
- /* Thumb-1 only.  */
- #define TARGET_THUMB1_ONLY		(TARGET_THUMB1 && !arm_arch_notm)
- 
--#define TARGET_LDRD			(arm_arch5e && ARM_DOUBLEWORD_ALIGN \
-+#define TARGET_LDRD			(arm_arch6 && ARM_DOUBLEWORD_ALIGN \
-                                          && !TARGET_THUMB1)
- 
- #define TARGET_CRC32			(arm_arch_crc)

+ 0 - 13
toolchain/gcc/patches/arc-2017.03-release/830-arm_unbreak_armv4t.patch

@@ -1,13 +0,0 @@
-http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
-
---- a/gcc/config/arm/linux-eabi.h
-+++ b/gcc/config/arm/linux-eabi.h
-@@ -45,7 +45,7 @@
-    The ARM10TDMI core is the default for armv5t, so set
-    SUBTARGET_CPU_DEFAULT to achieve this.  */
- #undef  SUBTARGET_CPU_DEFAULT
--#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
-+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
- 
- /* TARGET_BIG_ENDIAN_DEFAULT is set in
-    config.gcc for big endian configurations.  */

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/870-ppc_no_crtsavres.patch

@@ -1,11 +0,0 @@
---- a/gcc/config/rs6000/rs6000.c
-+++ b/gcc/config/rs6000/rs6000.c
-@@ -24171,7 +24171,7 @@ rs6000_savres_strategy (rs6000_stack_t *
-   /* Define cutoff for using out-of-line functions to save registers.  */
-   if (DEFAULT_ABI == ABI_V4 || TARGET_ELF)
-     {
--      if (!optimize_size)
-+      if (1)
- 	{
- 	  strategy |= SAVE_INLINE_FPRS | REST_INLINE_FPRS;
- 	  strategy |= SAVE_INLINE_GPRS | REST_INLINE_GPRS;

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/880-no_java_section.patch

@@ -1,11 +0,0 @@
---- a/gcc/defaults.h
-+++ b/gcc/defaults.h
-@@ -395,7 +395,7 @@ see the files COPYING3 and COPYING.RUNTI
- /* If we have named section and we support weak symbols, then use the
-    .jcr section for recording java classes which need to be registered
-    at program start-up time.  */
--#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
-+#if 0 && defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
- #ifndef JCR_SECTION_NAME
- #define JCR_SECTION_NAME ".jcr"
- #endif

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/881-no_tm_section.patch

@@ -1,11 +0,0 @@
---- a/libgcc/crtstuff.c
-+++ b/libgcc/crtstuff.c
-@@ -152,7 +152,7 @@ call_ ## FUNC (void)					\
- #endif
- 
- #if !defined(USE_TM_CLONE_REGISTRY) && defined(OBJECT_FORMAT_ELF)
--# define USE_TM_CLONE_REGISTRY 1
-+# define USE_TM_CLONE_REGISTRY 0
- #endif
- 
- /* We do not want to add the weak attribute to the declarations of these

+ 0 - 9
toolchain/gcc/patches/arc-2017.03-release/900-bad-mips16-crt.patch

@@ -1,9 +0,0 @@
---- a/libgcc/config/mips/t-mips16
-+++ b/libgcc/config/mips/t-mips16
-@@ -43,3 +43,6 @@ SYNC_CFLAGS = -mno-mips16
- 
- # Version these symbols if building libgcc.so.
- SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
-+
-+CRTSTUFF_T_CFLAGS += -mno-mips16
-+CRTSTUFF_T_CFLAGS_S += -mno-mips16

+ 0 - 11
toolchain/gcc/patches/arc-2017.03-release/940-no-clobber-stamp-bits.patch

@@ -1,11 +0,0 @@
---- a/libstdc++-v3/include/Makefile.in
-+++ b/libstdc++-v3/include/Makefile.in
-@@ -1459,7 +1459,7 @@ stamp-bits: ${bits_headers}
- 	@$(STAMP) stamp-bits
- 
- stamp-bits-sup: stamp-bits ${bits_sup_headers}
--	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
-+	@-cd ${bits_builddir} && $(LN_S) $(filter-out stamp-bits,$?) . 2>/dev/null
- 	@$(STAMP) stamp-bits-sup
- 
- stamp-c_base: ${c_base_headers}

+ 13 - 1
toolchain/gcc/patches/arc-2017.03-release/001-revert_register_mode_search.patch → toolchain/gcc/patches/arc-2017.09-release/001-revert_register_mode_search.patch

@@ -1,3 +1,15 @@
+commit 31285a20390a5e53a74a2a71d1b5c82f366ddd5a
+Author: Felix Fietkau <[email protected]>
+Date:   Tue May 6 11:49:05 2014 +0000
+
+    gcc: revert an upstream patch that is causing a regression on powerpc
+    
+    https://forum.openwrt.org/viewtopic.php?pid=232494#p232494
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+    
+    SVN-Revision: 40709
+
 Revert of:
 Revert of:
 
 
 commit 275035b56823b26d5fb7e90fad945b998648edf2
 commit 275035b56823b26d5fb7e90fad945b998648edf2
@@ -14,7 +26,7 @@ Date:   Thu Sep 5 14:09:07 2013 +0000
 
 
 --- a/gcc/reginfo.c
 --- a/gcc/reginfo.c
 +++ b/gcc/reginfo.c
 +++ b/gcc/reginfo.c
-@@ -625,35 +625,40 @@ choose_hard_reg_mode (unsigned int regno
+@@ -637,35 +637,40 @@ choose_hard_reg_mode (unsigned int regno
         mode = GET_MODE_WIDER_MODE (mode))
         mode = GET_MODE_WIDER_MODE (mode))
      if ((unsigned) hard_regno_nregs[regno][mode] == nregs
      if ((unsigned) hard_regno_nregs[regno][mode] == nregs
  	&& HARD_REGNO_MODE_OK (regno, mode)
  	&& HARD_REGNO_MODE_OK (regno, mode)

+ 10 - 0
toolchain/gcc/patches/arc-2017.03-release/002-case_insensitive.patch → toolchain/gcc/patches/arc-2017.09-release/002-case_insensitive.patch

@@ -1,3 +1,13 @@
+commit 81cc26c706b2bc8c8c1eb1a322e5c5157900836e
+Author: Felix Fietkau <[email protected]>
+Date:   Sun Oct 19 21:45:51 2014 +0000
+
+    gcc: do not assume that the Mac OS X filesystem is case insensitive
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+    
+    SVN-Revision: 42973
+
 --- a/include/filenames.h
 --- a/include/filenames.h
 +++ b/include/filenames.h
 +++ b/include/filenames.h
 @@ -43,11 +43,6 @@ extern "C" {
 @@ -43,11 +43,6 @@ extern "C" {

+ 13 - 1
toolchain/gcc/patches/arc-2017.03-release/010-documentation.patch → toolchain/gcc/patches/arc-2017.09-release/010-documentation.patch

@@ -1,6 +1,18 @@
+commit 098bd91f5eae625c7d2ee621e10930fc4434e5e2
+Author: Luka Perkov <[email protected]>
+Date:   Tue Feb 26 16:16:33 2013 +0000
+
+    gcc: don't build documentation
+    
+    This closes #13039.
+    
+    Signed-off-by: Luka Perkov <[email protected]>
+    
+    SVN-Revision: 35807
+
 --- a/gcc/Makefile.in
 --- a/gcc/Makefile.in
 +++ b/gcc/Makefile.in
 +++ b/gcc/Makefile.in
-@@ -3021,18 +3021,10 @@ doc/gcc.info: $(TEXI_GCC_FILES)
+@@ -3121,18 +3121,10 @@ doc/gcc.info: $(TEXI_GCC_FILES)
  doc/gccint.info: $(TEXI_GCCINT_FILES)
  doc/gccint.info: $(TEXI_GCCINT_FILES)
  doc/cppinternals.info: $(TEXI_CPPINT_FILES)
  doc/cppinternals.info: $(TEXI_CPPINT_FILES)
  
  

+ 28 - 0
toolchain/gcc/patches/arc-2017.09-release/230-musl_libssp.patch

@@ -0,0 +1,28 @@
+commit 1877bc9d8f2be143fbe530347a945850d0ecd234
+Author: Steven Barth <[email protected]>
+Date:   Mon Jun 22 10:31:07 2015 +0000
+
+    gcc/musl: rework SSP-support
+    
+    Make musl provide libssp_nonshared.a and make GCC link it unconditionally
+    if musl is used. This should be a no-op if SSP is disabled and seems to be
+    the only reliable way of dealing with SSP over all packages due to the mess
+    that is linkerflags handling in packages.
+    
+    Signed-off-by: Steven Barth <[email protected]>
+    
+    SVN-Revision: 46108
+
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -861,7 +861,9 @@ proper position among the other output f
+ #endif
+ 
+ #ifndef LINK_SSP_SPEC
+-#ifdef TARGET_LIBC_PROVIDES_SSP
++#if DEFAULT_LIBC == LIBC_MUSL
++#define LINK_SSP_SPEC "-lssp_nonshared"
++#elif defined(TARGET_LIBC_PROVIDES_SSP)
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+ 		       "|fstack-protector-strong|fstack-protector-explicit:}"
+ #else

+ 21 - 0
toolchain/gcc/patches/arc-2017.09-release/300-mips_Os_cpu_rtx_cost_model.patch

@@ -0,0 +1,21 @@
+commit ecf7671b769fe96f7b5134be442089f8bdba55d2
+Author: Felix Fietkau <[email protected]>
+Date:   Thu Aug 4 20:29:45 2016 +0200
+
+gcc: add a patch to generate better code with Os on mips
+
+Also happens to reduce compressed code size a bit
+
+Signed-off-by: Felix Fietkau <[email protected]>
+
+--- a/gcc/config/mips/mips.c
++++ b/gcc/config/mips/mips.c
+@@ -19784,7 +19784,7 @@ mips_option_override (void)
+     flag_pcc_struct_return = 0;
+ 
+   /* Decide which rtx_costs structure to use.  */
+-  if (optimize_size)
++  if (0 && optimize_size)
+     mips_cost = &mips_rtx_cost_optimize_size;
+   else
+     mips_cost = &mips_rtx_cost_data[mips_tune];

+ 32 - 0
toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch

@@ -0,0 +1,32 @@
+commit b050f87d13b5dc7ed82feb9a90f4529de58bdf25
+Author: Felix Fietkau <[email protected]>
+Date:   Wed Feb 19 19:20:10 2014 +0000
+
+    gcc: prevent the use of LDRD/STRD on ARMv5TE
+    
+    These instructions are for 64-bit load/store. On ARMv5TE, the CPU
+    requires addresses to be aligned to 64-bit. When misaligned, behavior is
+    undefined (effectively either loads the same word twice on LDRD, or
+    corrupts surrounding memory on STRD).
+    
+    On ARMv6 and newer, unaligned access is safe.
+    
+    Removing these instructions for ARMv5TE is necessary, because GCC
+    ignores alignment information in pointers and does unsafe optimizations
+    that have shown up as bugs in various places.
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+    
+    SVN-Revision: 39638
+
+--- a/gcc/config/arm/arm.h
++++ b/gcc/config/arm/arm.h
+@@ -150,7 +150,7 @@ extern tree arm_fp16_type_node;
+ /* Thumb-1 only.  */
+ #define TARGET_THUMB1_ONLY		(TARGET_THUMB1 && !arm_arch_notm)
+ 
+-#define TARGET_LDRD			(arm_arch5e && ARM_DOUBLEWORD_ALIGN \
++#define TARGET_LDRD			(arm_arch6 && ARM_DOUBLEWORD_ALIGN \
+                                          && !TARGET_THUMB1)
+ 
+ #define TARGET_CRC32			(arm_arch_crc)

+ 9 - 1
toolchain/gcc/patches/arc-2017.03-release/810-arm-softfloat-libgcc.patch → toolchain/gcc/patches/arc-2017.09-release/810-arm-softfloat-libgcc.patch

@@ -1,3 +1,11 @@
+commit 8570c4be394cff7282f332f97da2ff569a927ddb
+Author: Imre Kaloz <[email protected]>
+Date:   Wed Feb 2 20:06:12 2011 +0000
+
+    fixup arm soft-float symbols
+    
+    SVN-Revision: 25325
+
 --- a/libgcc/config/arm/t-linux
 --- a/libgcc/config/arm/t-linux
 +++ b/libgcc/config/arm/t-linux
 +++ b/libgcc/config/arm/t-linux
 @@ -1,6 +1,10 @@
 @@ -1,6 +1,10 @@
@@ -14,7 +22,7 @@
  # difference.
  # difference.
 --- a/gcc/config/arm/linux-elf.h
 --- a/gcc/config/arm/linux-elf.h
 +++ b/gcc/config/arm/linux-elf.h
 +++ b/gcc/config/arm/linux-elf.h
-@@ -60,8 +60,6 @@
+@@ -58,8 +58,6 @@
     %{shared:-lc} \
     %{shared:-lc} \
     %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
     %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
  
  

+ 11 - 3
toolchain/gcc/patches/arc-2017.03-release/820-libgcc_pic.patch → toolchain/gcc/patches/arc-2017.09-release/820-libgcc_pic.patch

@@ -1,6 +1,14 @@
+commit c96312958c0621e72c9b32da5bc224ffe2161384
+Author: Felix Fietkau <[email protected]>
+Date:   Mon Oct 19 23:26:09 2009 +0000
+
+    gcc: create a proper libgcc_pic.a static library for relinking (4.3.3+ for now, backport will follow)
+    
+    SVN-Revision: 18086
+
 --- a/libgcc/Makefile.in
 --- a/libgcc/Makefile.in
 +++ b/libgcc/Makefile.in
 +++ b/libgcc/Makefile.in
-@@ -888,11 +888,12 @@ $(libgcov-driver-objects): %$(objext): $
+@@ -920,11 +920,12 @@ $(libgcov-driver-objects): %$(objext): $
  
  
  # Static libraries.
  # Static libraries.
  libgcc.a: $(libgcc-objects)
  libgcc.a: $(libgcc-objects)
@@ -14,7 +22,7 @@
  	-rm -f $@
  	-rm -f $@
  
  
  	objects="$(objects)";					\
  	objects="$(objects)";					\
-@@ -913,7 +914,7 @@ all: libunwind.a
+@@ -945,7 +946,7 @@ all: libunwind.a
  endif
  endif
  
  
  ifeq ($(enable_shared),yes)
  ifeq ($(enable_shared),yes)
@@ -23,7 +31,7 @@
  ifneq ($(LIBUNWIND),)
  ifneq ($(LIBUNWIND),)
  all: libunwind$(SHLIB_EXT)
  all: libunwind$(SHLIB_EXT)
  libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
  libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
-@@ -1115,6 +1116,10 @@ install-shared:
+@@ -1151,6 +1152,10 @@ install-shared:
  	chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
  	chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
  	$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
  	$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
  
  

+ 10 - 1
toolchain/gcc/patches/arc-2017.03-release/840-armv4_pass_fix-v4bx_to_ld.patch → toolchain/gcc/patches/arc-2017.09-release/840-armv4_pass_fix-v4bx_to_ld.patch

@@ -1,6 +1,15 @@
+commit 7edc8ca5456d9743dd0075eb3cc5b04f4f24c8cc
+Author: Imre Kaloz <[email protected]>
+Date:   Wed Feb 2 19:34:36 2011 +0000
+
+    add armv4 fixup patches
+    
+    SVN-Revision: 25322
+
+
 --- a/gcc/config/arm/linux-eabi.h
 --- a/gcc/config/arm/linux-eabi.h
 +++ b/gcc/config/arm/linux-eabi.h
 +++ b/gcc/config/arm/linux-eabi.h
-@@ -94,10 +94,15 @@
+@@ -88,10 +88,15 @@
  #define MUSL_DYNAMIC_LINKER \
  #define MUSL_DYNAMIC_LINKER \
    "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
    "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
  
  

+ 9 - 2
toolchain/gcc/patches/arc-2017.03-release/850-use_shared_libgcc.patch → toolchain/gcc/patches/arc-2017.09-release/850-use_shared_libgcc.patch

@@ -1,6 +1,13 @@
+commit dcfc40358b5a3cae7320c17f8d1cebd5ad5540cd
+Author: Felix Fietkau <[email protected]>
+Date:   Sun Feb 12 20:25:47 2012 +0000
+
+    gcc 4.6: port over the missing patch 850-use_shared_libgcc.patch to prevent libgcc crap from leaking into every single binary
+    
+    SVN-Revision: 30486
 --- a/gcc/config/arm/linux-eabi.h
 --- a/gcc/config/arm/linux-eabi.h
 +++ b/gcc/config/arm/linux-eabi.h
 +++ b/gcc/config/arm/linux-eabi.h
-@@ -132,10 +132,6 @@
+@@ -126,10 +126,6 @@
    "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
    "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
    LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
    LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
  
  
@@ -26,7 +33,7 @@
     -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
     -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
 --- a/libgcc/mkmap-symver.awk
 --- a/libgcc/mkmap-symver.awk
 +++ b/libgcc/mkmap-symver.awk
 +++ b/libgcc/mkmap-symver.awk
-@@ -132,5 +132,5 @@ function output(lib) {
+@@ -136,5 +136,5 @@ function output(lib) {
    else if (inherit[lib])
    else if (inherit[lib])
      printf("} %s;\n", inherit[lib]);
      printf("} %s;\n", inherit[lib]);
    else
    else

+ 10 - 0
toolchain/gcc/patches/arc-2017.03-release/851-libgcc_no_compat.patch → toolchain/gcc/patches/arc-2017.09-release/851-libgcc_no_compat.patch

@@ -1,3 +1,13 @@
+commit 64661de100da1ec1061ef3e5e400285dce115e6b
+Author: Felix Fietkau <[email protected]>
+Date:   Sun May 10 13:16:35 2015 +0000
+
+    gcc: add some size optimization patches
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+    
+    SVN-Revision: 45664
+
 --- a/libgcc/config/t-libunwind
 --- a/libgcc/config/t-libunwind
 +++ b/libgcc/config/t-libunwind
 +++ b/libgcc/config/t-libunwind
 @@ -2,8 +2,7 @@
 @@ -2,8 +2,7 @@

+ 18 - 0
toolchain/gcc/patches/arc-2017.09-release/870-ppc_no_crtsavres.patch

@@ -0,0 +1,18 @@
+commit d8c570a1531035c3e26bcd94741e5f5b9c36b5d9
+Author: Felix Fietkau <[email protected]>
+Date:   Mon Mar 5 00:51:01 2012 +0000
+
+    gcc: do not emit references to _savegpr_* and _restgpr_* on powerpc, as they are tricky to deal with wrt. libgcc. they cannot be linked dynamically
+    
+    SVN-Revision: 30814
+--- a/gcc/config/rs6000/rs6000.c
++++ b/gcc/config/rs6000/rs6000.c
+@@ -26936,7 +26936,7 @@ rs6000_savres_strategy (rs6000_stack_t *
+   /* Define cutoff for using out-of-line functions to save registers.  */
+   if (DEFAULT_ABI == ABI_V4 || TARGET_ELF)
+     {
+-      if (!optimize_size)
++      if (1)
+ 	{
+ 	  strategy |= SAVE_INLINE_FPRS | REST_INLINE_FPRS;
+ 	  strategy |= SAVE_INLINE_GPRS | REST_INLINE_GPRS;

+ 22 - 0
toolchain/gcc/patches/arc-2017.09-release/881-no_tm_section.patch

@@ -0,0 +1,22 @@
+commit 565988ab47bd9b96b50608564aee2104aeb4b7ae
+Author: Felix Fietkau <[email protected]>
+Date:   Tue Dec 13 14:20:49 2016 +0100
+
+    gcc: rip out transactional memory related bloat from crtbegin
+    
+    Slightly improves compression for each executable, saving about 4k from
+    the default ar71xx rootfs
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+
+--- a/libgcc/crtstuff.c
++++ b/libgcc/crtstuff.c
+@@ -152,7 +152,7 @@ call_ ## FUNC (void)					\
+ #endif
+ 
+ #if !defined(USE_TM_CLONE_REGISTRY) && defined(OBJECT_FORMAT_ELF)
+-# define USE_TM_CLONE_REGISTRY 1
++# define USE_TM_CLONE_REGISTRY 0
+ #endif
+ 
+ /* We do not want to add the weak attribute to the declarations of these

+ 30 - 0
toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch

@@ -0,0 +1,30 @@
+commit 9dc38e48f7a6f88b7ac7bfaced91f53660204e46
+Author: Florian Fainelli <[email protected]>
+Date:   Fri Apr 5 12:36:06 2013 +0000
+
+    toolchain/gcc: .init and .fini need to pick one ISA
+    
+    The .init and .fini sections are built by concatenating code
+    fragments. Putting mips16 code in the middle of a mips32 code block
+    doesn't work. Make gcc built the magic crt stuff in no-mips16 mode.
+    
+    This is specific to 4.6-linaro but is probably portable to other gcc
+    flavors. Adding this to the t-libgcc-mips16 makefile fragment is a
+    hack not suitable for pushing upstream, but there is no mips/t-linux
+    or mips/t-uclibc and I am not going to touch gcc/configure for two
+    lines.
+    
+    Signed-off-by: Jay Carlson <[email protected]>
+    Signed-off-by: Florian Fainelli <[email protected]>
+    
+    SVN-Revision: 36200
+
+--- a/libgcc/config/mips/t-mips16
++++ b/libgcc/config/mips/t-mips16
+@@ -43,3 +43,6 @@ SYNC_CFLAGS = -mno-mips16
+ 
+ # Version these symbols if building libgcc.so.
+ SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
++
++CRTSTUFF_T_CFLAGS += -mno-mips16
++CRTSTUFF_T_CFLAGS_S += -mno-mips16

+ 17 - 93
toolchain/gcc/patches/arc-2017.03-release/910-mbsd_multi.patch → toolchain/gcc/patches/arc-2017.09-release/910-mbsd_multi.patch

@@ -1,22 +1,23 @@
+commit 99368862e44740ff4fd33760893f04e14f9dbdf1
+Author: Felix Fietkau <[email protected]>
+Date:   Tue Jul 31 00:52:27 2007 +0000
 
 
-	This patch brings over a few features from MirBSD:
+    Port the mbsd_multi patch from freewrt, which adds -fhonour-copts. This will emit warnings in packages that don't use our target cflags properly
+    
+    SVN-Revision: 8256
+
+	This patch brings over a feature from MirBSD:
 	* -fhonour-copts
 	* -fhonour-copts
 	  If this option is not given, it's warned (depending
 	  If this option is not given, it's warned (depending
 	  on environment variables). This is to catch errors
 	  on environment variables). This is to catch errors
 	  of misbuilt packages which override CFLAGS themselves.
 	  of misbuilt packages which override CFLAGS themselves.
-	* -Werror-maybe-reset
-	  Has the effect of -Wno-error if GCC_NO_WERROR is
-	  set and not '0', a no-operation otherwise. This is
-	  to be able to use -Werror in "make" but prevent
-	  GNU autoconf generated configure scripts from
-	  freaking out.
 
 
 	This patch was authored by Thorsten Glaser <tg at mirbsd.de>
 	This patch was authored by Thorsten Glaser <tg at mirbsd.de>
 	with copyright assignment to the FSF in effect.
 	with copyright assignment to the FSF in effect.
 
 
 --- a/gcc/c-family/c-opts.c
 --- a/gcc/c-family/c-opts.c
 +++ b/gcc/c-family/c-opts.c
 +++ b/gcc/c-family/c-opts.c
-@@ -107,6 +107,9 @@ static int class_dump_flags;
+@@ -108,6 +108,9 @@ static int class_dump_flags;
  /* Whether any standard preincluded header has been preincluded.  */
  /* Whether any standard preincluded header has been preincluded.  */
  static bool done_preinclude;
  static bool done_preinclude;
  
  
@@ -26,7 +27,7 @@
  static void handle_OPT_d (const char *);
  static void handle_OPT_d (const char *);
  static void set_std_cxx98 (int);
  static void set_std_cxx98 (int);
  static void set_std_cxx11 (int);
  static void set_std_cxx11 (int);
-@@ -442,6 +445,12 @@ c_common_handle_option (size_t scode, co
+@@ -456,6 +459,12 @@ c_common_handle_option (size_t scode, co
        flag_no_builtin = !value;
        flag_no_builtin = !value;
        break;
        break;
  
  
@@ -39,7 +40,7 @@
      case OPT_fconstant_string_class_:
      case OPT_fconstant_string_class_:
        constant_string_class_name = arg;
        constant_string_class_name = arg;
        break;
        break;
-@@ -1041,6 +1050,47 @@ c_common_init (void)
+@@ -1084,6 +1093,47 @@ c_common_init (void)
        return false;
        return false;
      }
      }
  
  
@@ -89,18 +90,7 @@
  
  
 --- a/gcc/c-family/c.opt
 --- a/gcc/c-family/c.opt
 +++ b/gcc/c-family/c.opt
 +++ b/gcc/c-family/c.opt
-@@ -438,6 +438,10 @@ Wfloat-conversion
- C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
- Warn for implicit type conversions that cause loss of floating point precision.
- 
-+Werror-maybe-reset
-+C ObjC C++ ObjC++
-+; Documented in common.opt
-+
- Wfloat-equal
- C ObjC C++ ObjC++ Var(warn_float_equal) Warning
- Warn if testing floating point numbers for equality.
-@@ -1252,6 +1256,9 @@ C++ ObjC++ Optimization Alias(fexception
+@@ -1412,6 +1412,9 @@ C++ ObjC++ Optimization Alias(fexception
  fhonor-std
  fhonor-std
  C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
  C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
  
  
@@ -112,18 +102,7 @@
  Assume normal C execution environment.
  Assume normal C execution environment.
 --- a/gcc/common.opt
 --- a/gcc/common.opt
 +++ b/gcc/common.opt
 +++ b/gcc/common.opt
-@@ -581,6 +581,10 @@ Werror=
- Common Joined
- Treat specified warning as error.
- 
-+Werror-maybe-reset
-+Common
-+If environment variable GCC_NO_WERROR is set, act as -Wno-error
-+
- Wextra
- Common Var(extra_warnings) Warning
- Print extra (possibly unwanted) warnings.
-@@ -1432,6 +1436,9 @@ fguess-branch-probability
+@@ -1510,6 +1510,9 @@ fguess-branch-probability
  Common Report Var(flag_guess_branch_prob) Optimization
  Common Report Var(flag_guess_branch_prob) Optimization
  Enable guessing of branch probabilities.
  Enable guessing of branch probabilities.
  
  
@@ -135,60 +114,24 @@
  ; On SVR4 targets, it also controls whether or not to emit a
  ; On SVR4 targets, it also controls whether or not to emit a
 --- a/gcc/opts.c
 --- a/gcc/opts.c
 +++ b/gcc/opts.c
 +++ b/gcc/opts.c
-@@ -1783,6 +1783,17 @@ common_handle_option (struct gcc_options
+@@ -1928,6 +1928,9 @@ common_handle_option (struct gcc_options
  			       opts, opts_set, loc, dc);
  			       opts, opts_set, loc, dc);
        break;
        break;
  
  
-+    case OPT_Werror_maybe_reset:
-+      {
-+        char *ev = getenv ("GCC_NO_WERROR");
-+        if ((ev != NULL) && (*ev != '0'))
-+          warnings_are_errors = 0;
-+      }
-+      break;
-+
 +    case OPT_fhonour_copts:
 +    case OPT_fhonour_copts:
 +      break;
 +      break;
 +
 +
      case OPT_Wlarger_than_:
      case OPT_Wlarger_than_:
        opts->x_larger_than_size = value;
        opts->x_larger_than_size = value;
        opts->x_warn_larger_than = value != -1;
        opts->x_warn_larger_than = value != -1;
---- a/gcc/doc/cppopts.texi
-+++ b/gcc/doc/cppopts.texi
-@@ -163,6 +163,11 @@ in older programs.  This warning is on b
- Make all warnings into hard errors.  Source code which triggers warnings
- will be rejected.
- 
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
- @item -Wsystem-headers
- @opindex Wsystem-headers
- Issue warnings for code in system headers.  These are normally unhelpful
 --- a/gcc/doc/invoke.texi
 --- a/gcc/doc/invoke.texi
 +++ b/gcc/doc/invoke.texi
 +++ b/gcc/doc/invoke.texi
-@@ -263,7 +263,7 @@ Objective-C and Objective-C++ Dialects}.
- -Wno-discarded-qualifiers -Wno-discarded-array-qualifiers @gol
- -Wno-div-by-zero -Wdouble-promotion -Wduplicated-cond @gol
- -Wempty-body  -Wenum-compare -Wno-endif-labels @gol
---Werror  -Werror=* -Wfatal-errors -Wfloat-equal  -Wformat  -Wformat=2 @gol
-+-Werror  -Werror=* -Werror-maybe-reset -Wfatal-errors -Wfloat-equal  -Wformat  -Wformat=2 @gol
- -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol
- -Wformat-security  -Wformat-signedness  -Wformat-y2k -Wframe-address @gol
- -Wframe-larger-than=@var{len} -Wno-free-nonheap-object -Wjump-misses-init @gol
-@@ -5737,6 +5737,22 @@ This option is only supported for C and
+@@ -6567,6 +6567,17 @@ This option is only supported for C and
  @option{-Wall} and by @option{-Wpedantic}, which can be disabled with
  @option{-Wall} and by @option{-Wpedantic}, which can be disabled with
  @option{-Wno-pointer-sign}.
  @option{-Wno-pointer-sign}.
  
  
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
-+ at item -fhonour-copts
-+ at opindex fhonour-copts
++@item -fhonour-copts
++@opindex fhonour-copts
 +If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
 +If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
 +given at least once, and warn if it is given more than once.
 +given at least once, and warn if it is given more than once.
 +If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
 +If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
@@ -201,22 +144,3 @@
  @item -Wstack-protector
  @item -Wstack-protector
  @opindex Wstack-protector
  @opindex Wstack-protector
  @opindex Wno-stack-protector
  @opindex Wno-stack-protector
-@@ -6605,7 +6621,7 @@ so, the first branch is redirected to ei
- second branch or a point immediately following it, depending on whether
- the condition is known to be true or false.
- 
--Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
-+Enabled at levels @option{-O3}.
- 
- @item -fsplit-wide-types
- @opindex fsplit-wide-types
---- a/gcc/java/jvspec.c
-+++ b/gcc/java/jvspec.c
-@@ -629,6 +629,7 @@ lang_specific_pre_link (void)
-      class name.  Append dummy `.c' that can be stripped by set_input so %b
-      is correct.  */ 
-   set_input (concat (main_class_name, "main.c", NULL));
-+  putenv ("GCC_HONOUR_COPTS=s"); /* XXX hack!  */
-   err = do_spec (jvgenmain_spec);
-   if (err == 0)
-     {

+ 8 - 1
toolchain/gcc/patches/arc-2017.03-release/920-specs_nonfatal_getenv.patch → toolchain/gcc/patches/arc-2017.09-release/920-specs_nonfatal_getenv.patch

@@ -1,6 +1,13 @@
+Author: Jo-Philipp Wich <[email protected]>
+Date:   Sat Apr 21 03:02:39 2012 +0000
+
+    gcc: add patch to make the getenv() spec function nonfatal if requested environment variable is unset
+    
+    SVN-Revision: 31390
+
 --- a/gcc/gcc.c
 --- a/gcc/gcc.c
 +++ b/gcc/gcc.c
 +++ b/gcc/gcc.c
-@@ -9198,8 +9198,10 @@ getenv_spec_function (int argc, const ch
+@@ -9280,8 +9280,10 @@ getenv_spec_function (int argc, const ch
      value = varname;
      value = varname;
  
  
    if (!value)
    if (!value)

+ 3 - 3
toolchain/gcc/patches/arc-2017.03-release/930-fix-mips-noexecstack.patch → toolchain/gcc/patches/arc-2017.09-release/930-fix-mips-noexecstack.patch

@@ -48,9 +48,9 @@ [email protected]
 
 
 --- a/gcc/config/mips/mips.c
 --- a/gcc/config/mips/mips.c
 +++ b/gcc/config/mips/mips.c
 +++ b/gcc/config/mips/mips.c
-@@ -20228,6 +20228,9 @@ mips_promote_function_mode (const_tree t
- #undef TARGET_HARD_REGNO_SCRATCH_OK
- #define TARGET_HARD_REGNO_SCRATCH_OK mips_hard_regno_scratch_ok
+@@ -22561,6 +22561,9 @@ mips_promote_function_mode (const_tree t
+ #undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
+ #define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 2
  
  
 +#undef TARGET_ASM_FILE_END
 +#undef TARGET_ASM_FILE_END
 +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack

+ 33 - 0
toolchain/gcc/patches/arc-2017.09-release/940-no-clobber-stamp-bits.patch

@@ -0,0 +1,33 @@
+commit 548d9a008ff265e9eaa3c7e0e6e301c6bd5645e6
+Author: Felix Fietkau <[email protected]>
+Date:   Fri Dec 12 17:01:57 2014 +0000
+
+    gcc: don't clobber stamp-bits with a symlink to itself
+    
+    Several versions of gcc have an issue in libstdc++v3 where the build may
+    clobber stamp-bits with a link to itself.  This doesn't manifest itself
+    on all systems.  On several Ubuntu systems, this doesn't appear to be a
+    problem, but it is an issue on Fedora 16 systems.
+    
+    To fix the issue, we'll simply filter out stamp-bits from the symlinks
+    to be generated.
+    
+    Note: gcc 4.4.7 is unaffected by this issue, so no fix is necessary
+    there.
+    
+    Signed-off-by: John Szakmeister <[email protected]>
+    
+    SVN-Revision: 43669
+
+
+--- a/libstdc++-v3/include/Makefile.in
++++ b/libstdc++-v3/include/Makefile.in
+@@ -1476,7 +1476,7 @@ stamp-bits: ${bits_headers}
+ 	@$(STAMP) stamp-bits
+ 
+ stamp-bits-sup: stamp-bits ${bits_sup_headers}
+-	@-cd ${bits_builddir} && $(LN_S) $? . 2>/dev/null
++	@-cd ${bits_builddir} && $(LN_S) $(filter-out stamp-bits,$?) . 2>/dev/null
+ 	@$(STAMP) stamp-bits-sup
+ 
+ stamp-c_base: ${c_base_headers}

+ 21 - 22
toolchain/gcc/patches/arc-2017.03-release/950-cpp_file_path_translation.patch → toolchain/gcc/patches/arc-2017.09-release/950-cpp_file_path_translation.patch

@@ -1,8 +1,18 @@
+commit 331735a357a73c7b8adc205241ac3cc6543d985e
+Author: Felix Fietkau <[email protected]>
+Date:   Tue Nov 17 12:38:22 2015 +0000
+
+    gcc: add a patch to 5.x that supports translation of __FILE__ paths
+    
+    Signed-off-by: Felix Fietkau <[email protected]>
+    
+    SVN-Revision: 47490
+
 Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47047
 Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47047
 
 
 --- a/gcc/c-family/c-opts.c
 --- a/gcc/c-family/c-opts.c
 +++ b/gcc/c-family/c-opts.c
 +++ b/gcc/c-family/c-opts.c
-@@ -574,6 +574,10 @@ c_common_handle_option (size_t scode, co
+@@ -588,6 +588,10 @@ c_common_handle_option (size_t scode, co
        add_path (xstrdup (arg), SYSTEM, 0, true);
        add_path (xstrdup (arg), SYSTEM, 0, true);
        break;
        break;
  
  
@@ -15,7 +25,7 @@ Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=4
        break;
        break;
 --- a/gcc/c-family/c.opt
 --- a/gcc/c-family/c.opt
 +++ b/gcc/c-family/c.opt
 +++ b/gcc/c-family/c.opt
-@@ -1632,6 +1632,10 @@ iquote
+@@ -1825,6 +1825,10 @@ iquote
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
  C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
  -iquote <dir>	Add <dir> to the end of the quote include path.
  -iquote <dir>	Add <dir> to the end of the quote include path.
  
  
@@ -28,19 +38,19 @@ Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=4
  -iwithprefix <dir>	Add <dir> to the end of the system include path.
  -iwithprefix <dir>	Add <dir> to the end of the system include path.
 --- a/gcc/doc/cpp.texi
 --- a/gcc/doc/cpp.texi
 +++ b/gcc/doc/cpp.texi
 +++ b/gcc/doc/cpp.texi
-@@ -4444,6 +4444,7 @@ without notice.
+@@ -4272,6 +4272,7 @@ Refer to the GCC manual for full documen
  @c man begin SYNOPSIS
  @c man begin SYNOPSIS
  cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
  cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
      [@option{-I}@var{dir}@dots{}] [@option{-iquote}@var{dir}@dots{}]
      [@option{-I}@var{dir}@dots{}] [@option{-iquote}@var{dir}@dots{}]
 +    [@option{-iremap}@var{src}:@var{dst}]
 +    [@option{-iremap}@var{src}:@var{dst}]
-     [@option{-W}@var{warn}@dots{}]
      [@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
      [@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
      [@option{-MP}] [@option{-MQ} @var{target}@dots{}]
      [@option{-MP}] [@option{-MQ} @var{target}@dots{}]
+     [@option{-MT} @var{target}@dots{}]
 --- a/gcc/doc/cppopts.texi
 --- a/gcc/doc/cppopts.texi
 +++ b/gcc/doc/cppopts.texi
 +++ b/gcc/doc/cppopts.texi
-@@ -532,6 +532,12 @@ Search @var{dir} only for header files r
- If @var{dir} begins with @code{=}, then the @code{=} will be replaced
- by the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
+@@ -220,6 +220,12 @@ extensions @samp{.i}, @samp{.ii} or @sam
+ extensions that GCC uses for preprocessed files created by
+ @option{-save-temps}.
  
  
 +@item -iremap @var{src}:@var{dst}
 +@item -iremap @var{src}:@var{dst}
 +@opindex iremap
 +@opindex iremap
@@ -53,20 +63,9 @@ Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=4
  When preprocessing, handle directives, but do not expand macros.
  When preprocessing, handle directives, but do not expand macros.
 --- a/gcc/doc/invoke.texi
 --- a/gcc/doc/invoke.texi
 +++ b/gcc/doc/invoke.texi
 +++ b/gcc/doc/invoke.texi
-@@ -476,8 +476,8 @@ Objective-C and Objective-C++ Dialects}.
- @item Directory Options
- @xref{Directory Options,,Options for Directory Search}.
- @gccoptlist{-B@var{prefix} -I@var{dir} -iplugindir=@var{dir} @gol
---iquote@var{dir} -L@var{dir} -no-canonical-prefixes -I- @gol
----sysroot=@var{dir} --no-sysroot-suffix}
-+-iquote@var{dir} -iremap@var{src}:@var{dst} -L@var{dir} -no-canonical-prefixes @gol
-+-I- --sysroot=@var{dir} --no-sysroot-suffix}
- 
- @item Code Generation Options
- @xref{Code Gen Options,,Options for Code Generation Conventions}.
-@@ -10861,6 +10861,12 @@ be searched for header files only for th
- "@var{file}"}; they are not searched for @code{#include <@var{file}>},
- otherwise just like @option{-I}.
+@@ -11863,6 +11863,12 @@ by @option{-fplugin=@var{name}} instead
+ @option{-fplugin=@var{path}/@var{name}.so}.  This option is not meant
+ to be used by the user, but only passed by the driver.
  
  
 +@item -iremap @var{src}:@var{dst}
 +@item -iremap @var{src}:@var{dst}
 +@opindex iremap
 +@opindex iremap
@@ -79,7 +78,7 @@ Forward ported from attachment to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=4
  Add directory @var{dir} to the list of directories to be searched
  Add directory @var{dir} to the list of directories to be searched
 --- a/libcpp/include/cpplib.h
 --- a/libcpp/include/cpplib.h
 +++ b/libcpp/include/cpplib.h
 +++ b/libcpp/include/cpplib.h
-@@ -760,6 +760,9 @@ extern void cpp_set_lang (cpp_reader *,
+@@ -820,6 +820,9 @@ extern void cpp_set_lang (cpp_reader *,
  /* Set the include paths.  */
  /* Set the include paths.  */
  extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
  extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
  
  

+ 3 - 3
toolchain/gdb/Makefile

@@ -9,11 +9,11 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=gdb
 PKG_NAME:=gdb
 
 
 ifeq ($(CONFIG_arc),y)
 ifeq ($(CONFIG_arc),y)
-PKG_VERSION:=arc-2017.03-gdb
+PKG_VERSION:=arc-2017.09-gdb
 
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/arc-2017.03-gdb
-PKG_HASH:=f47930161e9e99c46ab018dabbf56024739dda29c51f92495eaa0d4d7e3511f6
+PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/arc-2017.09-gdb
+PKG_HASH:=7e3c2a763bf500a40c5c4591a7e22c591dafc1f214b1d514895c1096e85c883a
 GDB_DIR:=binutils-$(PKG_NAME)-$(PKG_VERSION)
 GDB_DIR:=binutils-$(PKG_NAME)-$(PKG_VERSION)
 PATCH_DIR:=./patches-arc
 PATCH_DIR:=./patches-arc
 else
 else