Browse Source

binutils: update to 2.29

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Waldemar Brodkorb 6 years ago
parent
commit
50229d9ba0

+ 3 - 17
toolchain/binutils/Makefile.inc

@@ -2,24 +2,10 @@
 # material, please see the LICENCE file in the top-level directory.
 
 PKG_NAME:=		binutils
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_28),y)
-PKG_VERSION:=		2.28
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_29),y)
+PKG_VERSION:=		2.29
 PKG_RELEASE:=		1
-PKG_HASH:=		cd717966fc761d840d451dbd58d44e1e5b92949d2073d75b73fccb476d772fcf
-PKG_SITES:=		${MASTER_SITE_GNU:=binutils/}
-DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
-endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_27),y)
-PKG_VERSION:=		2.27
-PKG_RELEASE:=		1
-PKG_HASH:=		26253bf0f360ceeba1d9ab6965c57c6a48a01a8343382130d1ed47c468a3094f
-PKG_SITES:=		${MASTER_SITE_GNU:=binutils/}
-DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
-endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_26_1),y)
-PKG_VERSION:=		2.26.1
-PKG_RELEASE:=		1
-PKG_HASH:=		dd9c3e37c266e4fefba68e444e2a00538b3c902dd31bf4912d90dca6d830a2a1
+PKG_HASH:=		172e8c89472cf52712fd23a9f14e9bca6182727fb45b0f8f482652a83d5a11b4
 PKG_SITES:=		${MASTER_SITE_GNU:=binutils/}
 DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
 endif

+ 42 - 0
toolchain/binutils/patches/2.29/xtensa-fix-memory-corruption-by-broken-sysregs.patch

@@ -0,0 +1,42 @@
+From 3c8788dbb70b40e737d4b8e30cab81406e5c5091 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Wed, 2 Aug 2017 00:36:05 -0700
+Subject: [PATCH] xtensa: fix memory corruption by broken sysregs
+
+In some xtensa configurations there may be system/user registers in
+xtensa-modules with negative index. ISA initialization for such config
+may clobber heap and result in program termination.
+Don't update lookup table entries for register with negative indices.
+They are not directly accessible via RSR/WSR/XSR or RUR/WUR, so this
+change should not affect processing of valid assembly/binary code.
+
+bfd/
+2017-08-02  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* xtensa-isa.c (xtensa_isa_init): Don't update lookup table
+	entries for sysregs with negative indices.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+Backported from: d84ed528d4817b0ff854006b65a9f6ec75f0407a
+
+ bfd/xtensa-isa.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/bfd/xtensa-isa.c b/bfd/xtensa-isa.c
+index 8da75bea8109..8c6ee88fdeae 100644
+--- a/bfd/xtensa-isa.c
++++ b/bfd/xtensa-isa.c
+@@ -292,7 +292,8 @@ xtensa_isa_init (xtensa_isa_status *errno_p, char **error_msg_p)
+       xtensa_sysreg_internal *sreg = &isa->sysregs[n];
+       is_user = sreg->is_user;
+ 
+-      isa->sysreg_table[is_user][sreg->number] = n;
++      if (sreg->number >= 0)
++	isa->sysreg_table[is_user][sreg->number] = n;
+     }
+ 
+   /* Set up the interface lookup table.  */
+-- 
+2.1.4
+

+ 48 - 0
toolchain/binutils/patches/2.29/xtensa-ld-restore-old-section-sorting-behavior.patch

@@ -0,0 +1,48 @@
+From 3a399127ead1ba3c8b8d0b9e7206fce39311ee72 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Wed, 2 Aug 2017 02:49:56 -0700
+Subject: [PATCH] xtensa: ld: restore old section sorting behavior
+
+With the recent change 535b785fb0c9 ("Don't compare boolean values
+against TRUE or FALSE") the following assertion is observed when
+linking with --sort-section,alignment option:
+
+  BFD (GNU Binutils) 2.29 assertion fail elf32-xtensa.c:3965
+
+It appears that xtensa linker only supported sorting sections by name,
+and the code that checks for the section sorting type in
+ld/emultempl/xtensaelf.em was not updated in the change bcaa7b3eb957
+("ld/"), that replaced boolean wildcard_spec::sorted with enumeration.
+
+Restore the original behavior of the section sorting code.
+
+ld/
+2017-08-02  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* emultempl/xtensaelf.em
+	(xtensa_wild_group_interleave_callback): Only check for by_name
+	sorting.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+Backported from: 73d5923e480944e2d66bde8c59f4dff298ec57e3
+
+ ld/emultempl/xtensaelf.em | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
+index 1447d526a25b..3827d91b6291 100644
+--- a/ld/emultempl/xtensaelf.em
++++ b/ld/emultempl/xtensaelf.em
+@@ -1432,7 +1432,7 @@ xtensa_wild_group_interleave_callback (lang_statement_union_type *statement)
+ 	  struct wildcard_list *l;
+ 	  for (l = w->section_list; l != NULL; l = l->next)
+ 	    {
+-	      if (l->spec.sorted != none)
++	      if (l->spec.sorted == by_name)
+ 		{
+ 		  no_reorder = TRUE;
+ 		  break;
+-- 
+2.1.4
+

+ 2 - 2
toolchain/elf2flt/Makefile

@@ -9,8 +9,8 @@ include $(ADK_TOPDIR)/mk/buildhlp.mk
 ifeq ($(ADK_TOOLCHAIN_BINUTILS_GIT),y)
 BINUTILS_VERSION:=	git
 endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_28),y)
-BINUTILS_VERSION:=	2.28
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_29),y)
+BINUTILS_VERSION:=	2.29
 endif
 
 $(WRKBUILD)/.configured: