summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-02-14 10:40:57 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-14 12:30:30 +0000
commit97c9163d97911dad0afcd0dae39e5c426e27e921 (patch)
tree0dec25e30797df9c7c7cf651d5718e2190301f59 /meta
parent1a4fd0dd66ee4f1acbbe00f32085bf0d20530526 (diff)
downloadpoky-97c9163d97911dad0afcd0dae39e5c426e27e921.tar.gz
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) (From OE-Core rev: acef5185492287b9569f7fbbc3e9570d688e9c9f) Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.8.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.8/0048-PR58854_fix_arm_apcs_epilogue.patch23
2 files changed, 24 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc
index b34c7ae3c4..f1260af3a3 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 \
78 file://0046-libatomic-deptracking.patch \ 78 file://0046-libatomic-deptracking.patch \
79 file://0047-repomembug.patch \ 79 file://0047-repomembug.patch \
80 file://0048-PR57532.patch \ 80 file://0048-PR57532.patch \
81 file://0048-PR58854_fix_arm_apcs_epilogue.patch \
81 " 82 "
82SRC_URI[md5sum] = "3b2386c114cd74185aa3754b58a79304" 83SRC_URI[md5sum] = "3b2386c114cd74185aa3754b58a79304"
83SRC_URI[sha256sum] = "545b44be3ad9f2c4e90e6880f5c9d4f0a8f0e5f67e1ffb0d45da9fa01bb05813" 84SRC_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 0000000000..0ef245a17f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.8/0048-PR58854_fix_arm_apcs_epilogue.patch
@@ -0,0 +1,23 @@
1Backport fix for PR target/58854
2
32013-11-11 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4
5 Backported from mainline
6 2013-10-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7
8 PR target/58854
9 * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage
10
11
12Upstream-Status: Backport
13
14--- gcc-4_8-branch/gcc/config/arm/arm.c 2013/11/11 08:00:45 204664
15+++ gcc-4_8-branch/gcc/config/arm/arm.c 2013/11/11 09:38:14 204665
16@@ -23555,6 +23555,7 @@
17 num_regs = bit_count (saved_regs_mask);
18 if ((offsets->outgoing_args != (1 + num_regs)) || cfun->calls_alloca)
19 {
20+ emit_insn (gen_blockage ());
21 /* Unwind the stack to just below the saved registers. */
22 emit_insn (gen_addsi3 (stack_pointer_rtx,
23 hard_frame_pointer_rtx,