[oe-commits] Holger Hans Peter Freyther : gcc: Include patch scheduled for GCC 4.8.3 to fix epilogue on ARM
git at git.openembedded.org
git at git.openembedded.org
Fri Feb 14 12:25:04 UTC 2014
Module: openembedded-core.git
Branch: dora
Commit: acef5185492287b9569f7fbbc3e9570d688e9c9f
URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=acef5185492287b9569f7fbbc3e9570d688e9c9f
Author: Holger Hans Peter Freyther <holger at moiji-mobile.com>
Date: Fri Feb 14 10:40:57 2014 +0800
gcc: Include patch scheduled for GCC 4.8.3 to fix epilogue on ARM
GCC 4.8.0, 4.8.1 and 4.8.2 can generate broken epilogues for the
ABI used by the kernel. Apply the patch that is included for GCC
4.8.3 from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854.
The issue was found on Yocto/Dora and the patch should be backported
to this branch. A kernel built with Dora's GCC 4.8.1 misbehaved on:
while true;
do
(for i in `seq 1 100`;
do
echo "Log message... $RANDOM";
done) | logger;
done
busybox's syslogd would from time to read a huge negative value and
then exit, strace would get stuck waiting on a syscall. After this
patch it appears to work better.
(From OE-Core master rev: 3004eb3b7ee5fd8dfe9c4e5749b4e125d0bd4b59)
Signed-off-by: Holger Hans Peter Freyther <holger at moiji-mobile.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
meta/recipes-devtools/gcc/gcc-4.8.inc | 1 +
.../0048-PR58854_fix_arm_apcs_epilogue.patch | 23 ++++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc
index b34c7ae..f1260af 100644
--- a/meta/recipes-devtools/gcc/gcc-4.8.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.8.inc
@@ -78,6 +78,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://0046-libatomic-deptracking.patch \
file://0047-repomembug.patch \
file://0048-PR57532.patch \
+ file://0048-PR58854_fix_arm_apcs_epilogue.patch \
"
SRC_URI[md5sum] = "3b2386c114cd74185aa3754b58a79304"
SRC_URI[sha256sum] = "545b44be3ad9f2c4e90e6880f5c9d4f0a8f0e5f67e1ffb0d45da9fa01bb05813"
diff --git a/meta/recipes-devtools/gcc/gcc-4.8/0048-PR58854_fix_arm_apcs_epilogue.patch b/meta/recipes-devtools/gcc/gcc-4.8/0048-PR58854_fix_arm_apcs_epilogue.patch
new file mode 100644
index 0000000..0ef245a
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.8/0048-PR58854_fix_arm_apcs_epilogue.patch
@@ -0,0 +1,23 @@
+Backport fix for PR target/58854
+
+2013-11-11 Ramana Radhakrishnan <ramana.radhakrishnan at arm.com>
+
+ Backported from mainline
+ 2013-10-30 Ramana Radhakrishnan <ramana.radhakrishnan at arm.com>
+
+ PR target/58854
+ * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage
+
+
+Upstream-Status: Backport
+
+--- gcc-4_8-branch/gcc/config/arm/arm.c 2013/11/11 08:00:45 204664
++++ gcc-4_8-branch/gcc/config/arm/arm.c 2013/11/11 09:38:14 204665
+@@ -23555,6 +23555,7 @@
+ num_regs = bit_count (saved_regs_mask);
+ if ((offsets->outgoing_args != (1 + num_regs)) || cfun->calls_alloca)
+ {
++ emit_insn (gen_blockage ());
+ /* Unwind the stack to just below the saved registers. */
+ emit_insn (gen_addsi3 (stack_pointer_rtx,
+ hard_frame_pointer_rtx,
More information about the Openembedded-commits
mailing list