aboutsummaryrefslogtreecommitdiff
path: root/meta-linaro-toolchain/recipes-devtools/gcc
diff options
context:
space:
mode:
authorFathi Boudra <fathi.boudra@linaro.org>2014-07-18 12:03:41 +0300
committerFathi Boudra <fathi.boudra@linaro.org>2014-07-18 12:03:41 +0300
commit0a3a117a27d2b1a014512e40449248a0162b0867 (patch)
tree31b9a592957871b9a95ffeb77a092ec64a26ddba /meta-linaro-toolchain/recipes-devtools/gcc
parent9caeb7b7f045cc4cd626df7c54398db90a7c1b29 (diff)
gcc-linaro-4.9: update to 2014.07 release
* Update SRC_URI for Linaro GCC 4.9-2014.07 * Sync patches with oe-core - (disabled) 0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch - 0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch * Refresh patches - AArch64-Define-BE-loader-name-default-be.patch - use-lib-for-aarch64.patch Change-Id: I6754ab48605da52ff52571656cb8915a073e0ea0 Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Diffstat (limited to 'meta-linaro-toolchain/recipes-devtools/gcc')
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9.inc10
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0047-repomembug.patch2
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch98
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch66
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/AArch64-Define-BE-loader-name-default-be.patch8
-rw-r--r--meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/use-lib-for-aarch64.patch6
6 files changed, 178 insertions, 12 deletions
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9.inc b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9.inc
index 72c08d14..18bf0740 100644
--- a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9.inc
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9.inc
@@ -1,8 +1,8 @@
require recipes-devtools/gcc/gcc-4.9.inc
PV = "linaro-${BASEPV}"
-MMYY = "14.06"
-RELEASE = "20${MMYY}-1"
+MMYY = "14.07"
+RELEASE = "20${MMYY}"
PR = "r${RELEASE}"
BINV = "4.9.1"
@@ -52,12 +52,14 @@ SRC_URI = "https://releases.linaro.org/${MMYY}/components/toolchain/gcc-linaro/$
file://0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \
file://0050-Revert-Use-dbx_reg_number-for-spanning-registers.patch \
file://0051-eabispe.patch \
+ file://0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch;apply=no \
+ file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch \
file://AArch64-Define-BE-loader-name-default-be.patch \
file://use-lib-for-aarch64.patch \
"
-SRC_URI[md5sum] = "d2a0e0a7ed23edba0c506899d2e26e29"
-SRC_URI[sha256sum] = "eacd202da0fcdef391479ef8a4e5961e803b07369ae9ce59202f045719341492"
+SRC_URI[md5sum] = "95fbe1f1933aa157ec9e083419b8dd88"
+SRC_URI[sha256sum] = "d5d11b7356fd351532396c81e1d7a390842806b31ef288a6ac13c53a45a0c62d"
S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}-${RELEASE}"
B = "${WORKDIR}/gcc-${PV}-${RELEASE}/build.${HOST_SYS}.${TARGET_SYS}"
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0047-repomembug.patch b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0047-repomembug.patch
index 868a4f3a..9afd55cb 100644
--- a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0047-repomembug.patch
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0047-repomembug.patch
@@ -31,7 +31,7 @@ RP 2013/10/9
[YOCTO #5133]
-Upstream-State: Pending
+Upstream-Status: Pending
Index: gcc-4.8.1/gcc/toplev.c
===================================================================
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch
new file mode 100644
index 00000000..b4be18e2
--- /dev/null
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0052-Fix-GCC-targeting-E500-SPE-errors-with-the-_Decimal64-type.patch
@@ -0,0 +1,98 @@
+From e44a6d438db4848c2a555be773568a3cf7994206 Mon Sep 17 00:00:00 2001
+From: Alexandru-Cezar Sardan <alexandru.sardan-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
+Date: Mon, 26 May 2014 12:11:13 +0300
+Subject: [PATCH] Fix E500 with SPE errors with the _Decimal64 type
+
+[gcc]
+2014-04-21 Michael Meissner <meissner-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
+
+ PR target/60735
+ * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64 case):
+ If mode is DDmode and TARGET_E500_DOUBLE allow move.
+
+ * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print some
+ more debug information for E500 if -mdebug=reg.
+
+[gcc/testsuite]
+2014-04-21 Michael Meissner <meissner-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
+
+ PR target/60735
+ * gcc.target/powerpc/pr60735.c: New test. Insure _Decimal64 does
+ not cause errors if -mspe.
+
+Upstream status: Accepted
+
+This solves upstream bug 60735
+(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60735).
+
+Patch taken from https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=209664
+---
+ gcc/config/rs6000/rs6000.c | 18 ++++++++++++++++++
+ gcc/config/rs6000/rs6000.md | 3 ++-
+ gcc/testsuite/gcc.target/powerpc/pr60735.c | 11 +++++++++++
+ 3 files changed, 31 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.target/powerpc/pr60735.c
+
+diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
+index 494efc5..6dcf440 100644
+--- a/gcc/config/rs6000/rs6000.c
++++ b/gcc/config/rs6000/rs6000.c
+@@ -2283,6 +2283,24 @@ rs6000_debug_reg_global (void)
+ if (rs6000_float_gprs)
+ fprintf (stderr, DEBUG_FMT_S, "float_gprs", "true");
+
++ fprintf (stderr, DEBUG_FMT_S, "fprs",
++ (TARGET_FPRS ? "true" : "false"));
++
++ fprintf (stderr, DEBUG_FMT_S, "single_float",
++ (TARGET_SINGLE_FLOAT ? "true" : "false"));
++
++ fprintf (stderr, DEBUG_FMT_S, "double_float",
++ (TARGET_DOUBLE_FLOAT ? "true" : "false"));
++
++ fprintf (stderr, DEBUG_FMT_S, "soft_float",
++ (TARGET_SOFT_FLOAT ? "true" : "false"));
++
++ fprintf (stderr, DEBUG_FMT_S, "e500_single",
++ (TARGET_E500_SINGLE ? "true" : "false"));
++
++ fprintf (stderr, DEBUG_FMT_S, "e500_double",
++ (TARGET_E500_DOUBLE ? "true" : "false"));
++
+ if (TARGET_LINK_STACK)
+ fprintf (stderr, DEBUG_FMT_S, "link_stack", "true");
+
+diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
+index 64c9e7c..9cefe15 100644
+--- a/gcc/config/rs6000/rs6000.md
++++ b/gcc/config/rs6000/rs6000.md
+@@ -9395,7 +9395,8 @@
+ (match_operand:FMOVE64 1 "input_operand" "r,Y,r,G,H,F"))]
+ "! TARGET_POWERPC64
+ && ((TARGET_FPRS && TARGET_SINGLE_FLOAT)
+- || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE)
++ || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE
++ || (<MODE>mode == DDmode && TARGET_E500_DOUBLE))
+ && (gpc_reg_operand (operands[0], <MODE>mode)
+ || gpc_reg_operand (operands[1], <MODE>mode))"
+ "#"
+diff --git a/gcc/testsuite/gcc.target/powerpc/pr60735.c b/gcc/testsuite/gcc.target/powerpc/pr60735.c
+new file mode 100644
+index 0000000..9bac30b
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/powerpc/pr60735.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-mcpu=8548 -mspe -mabi=spe -O2" } */
++/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
++
++/* In PR60735, the type _Decimal64 generated an insn not found message. */
++
++void
++pr60735 (_Decimal64 *p, _Decimal64 *q)
++{
++ *p = *q;
++}
+--
+1.7.9.5
+
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch
new file mode 100644
index 00000000..23b445c9
--- /dev/null
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch
@@ -0,0 +1,66 @@
+From a22a222c8f9299f6c07a0274388ade7d4ab8c28d Mon Sep 17 00:00:00 2001
+From: Paul Gortmaker <paul.gortmaker@windriver.com>
+Date: Fri, 20 Jun 2014 16:41:08 -0400
+Subject: [PATCH] gcc: fix segfault from calling free on non-malloc'd area
+
+We see the following on a 32bit gcc installed on 64 bit host:
+
+ Reading symbols from ./i586-pokymllib32-linux-gcc...done.
+ (gdb) run
+ Starting program: x86-pokymllib32-linux/lib32-gcc/4.9.0-r0/image/usr/bin/i586-pokymllib32-linux-gcc
+
+ Program received signal SIGSEGV, Segmentation fault.
+ 0xf7e957e0 in free () from /lib/i386-linux-gnu/libc.so.6
+ (gdb) bt
+ #0 0xf7e957e0 in free () from /lib/i386-linux-gnu/libc.so.6
+ #1 0x0804b73c in set_multilib_dir () at gcc-4.9.0/gcc/gcc.c:7827
+ #2 main (argc=1, argv=0xffffd504) at gcc-4.9.0/gcc/gcc.c:6688
+ (gdb)
+
+The problem arises because we conditionally assign the pointer we
+eventually free, and the conditional may assign the pointer to the
+non-malloc'd internal string "." which fails when we free it here:
+
+ if (multilib_dir == NULL && multilib_os_dir != NULL
+ && strcmp (multilib_os_dir, ".") == 0)
+ {
+ free (CONST_CAST (char *, multilib_os_dir));
+ ...
+
+As suggested by Jakub, ensure the "." case is also malloc'd via
+xstrdup() and hence the pointer for the "." case can be freed.
+
+Cc: Jakub Jelinek <jakub@redhat.com>
+Cc: Jeff Law <law@redhat.com>
+Cc: Matthias Klose <doko@ubuntu.com>
+CC: Tobias Burnus <burnus@net-b.de>
+Upstream-Status: Accepted [ https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02069.html ]
+Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 9ac18e60d801..168acf7eb0c9 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -7790,10 +7790,15 @@ set_multilib_dir (void)
+ q2++;
+ if (*q2 == ':')
+ ml_end = q2;
+- new_multilib_os_dir = XNEWVEC (char, ml_end - q);
+- memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
+- new_multilib_os_dir[ml_end - q - 1] = '\0';
+- multilib_os_dir = *new_multilib_os_dir ? new_multilib_os_dir : ".";
++ if (ml_end - q == 1)
++ multilib_os_dir = xstrdup (".");
++ else
++ {
++ new_multilib_os_dir = XNEWVEC (char, ml_end - q);
++ memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
++ new_multilib_os_dir[ml_end - q - 1] = '\0';
++ multilib_os_dir = new_multilib_os_dir;
++ }
+
+ if (q2 < end && *q2 == ':')
+ {
+--
+1.9.2
+
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/AArch64-Define-BE-loader-name-default-be.patch b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/AArch64-Define-BE-loader-name-default-be.patch
index eb8ff014..87552415 100644
--- a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/AArch64-Define-BE-loader-name-default-be.patch
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/AArch64-Define-BE-loader-name-default-be.patch
@@ -6,7 +6,7 @@ Index: gcc-linaro-4.8-2014.03/gcc/config/aarch64/aarch64-linux.h
#ifndef GCC_AARCH64_LINUX_H
#define GCC_AARCH64_LINUX_H
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
@@ -21,9 +21,9 @@ Index: gcc-linaro-4.8-2014.03/gcc/config/aarch64/aarch64-linux.h
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \
+ -X \
+ %{mbig-endian:-EB} %{mlittle-endian:-EL} \
-+ -maarch64linux%{!mlittle-endian:b}"
++ -maarch64linux%{mabi=ilp32:32}%{!mlittle-endian:b}"
+#else
-+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
++#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+
#define LINUX_TARGET_LINK_SPEC "%{h*} \
%{static:-Bstatic} \
@@ -31,7 +31,7 @@ Index: gcc-linaro-4.8-2014.03/gcc/config/aarch64/aarch64-linux.h
@@ -34,6 +47,7 @@
-X \
%{mbig-endian:-EB} %{mlittle-endian:-EL} \
- -maarch64linux%{mbig-endian:b}"
+ -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
+#endif
#define LINK_SPEC LINUX_TARGET_LINK_SPEC
diff --git a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/use-lib-for-aarch64.patch b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/use-lib-for-aarch64.patch
index e91ebd88..62bb110f 100644
--- a/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/use-lib-for-aarch64.patch
+++ b/meta-linaro-toolchain/recipes-devtools/gcc/gcc-linaro-4.9/use-lib-for-aarch64.patch
@@ -6,8 +6,8 @@ index 147452b..1930046 100644
LIB1ASMFUNCS = _aarch64_sync_cache_range
AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
--MULTILIB_OSDIRNAMES = .=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
-+MULTILIB_OSDIRNAMES = .=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
+-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
- # Disable the multilib for linux-gnu targets for the time being; focus
+ MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32