summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorSaul Wold <sgw@linux.intel.com>2014-10-10 23:46:16 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-10-11 08:11:03 +0100
commit0fb3552632866f2b1ef8f76b0123b1dc865297a3 (patch)
treef625b60ff6f7368e954b539c138e700d547ae1a0 /meta
parentc0b0f695f537541cf3247afd8bfd19e471ed81d7 (diff)
downloadpoky-0fb3552632866f2b1ef8f76b0123b1dc865297a3.tar.gz
gcc: backport patch for gcc bug 61144
This fixes gcc bug 6144, which in my case exhibited itself as a kernel module that failed to load. This was because static platform_data structures were being corrupted with the optimiser being set to any value other than -O0. Originally-submitted-by: Peter Urbanec <openembedded-devel@urbanec.net> (From OE-Core rev: 365221f7285c0e392f573deaab3b1e00b12bc293) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.9.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch31
2 files changed, 32 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.9.inc b/meta/recipes-devtools/gcc/gcc-4.9.inc
index 25778bd272..9a66cd294f 100644
--- a/meta/recipes-devtools/gcc/gcc-4.9.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.9.inc
@@ -70,6 +70,7 @@ SRC_URI = "\
70 file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch \ 70 file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch \
71 file://0054-gcc-Makefile.in-fix-parallel-building-failure.patch \ 71 file://0054-gcc-Makefile.in-fix-parallel-building-failure.patch \
72 file://0055-PR-rtl-optimization-61801.patch \ 72 file://0055-PR-rtl-optimization-61801.patch \
73 file://0056-top-level-reorder_gcc-bug-61144.patch \
73" 74"
74SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1" 75SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1"
75SRC_URI[sha256sum] = "d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e" 76SRC_URI[sha256sum] = "d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e"
diff --git a/meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch b/meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch
new file mode 100644
index 0000000000..f44893251c
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch
@@ -0,0 +1,31 @@
1
2Upstream-Status: Backport
3
4Originally-submitted-by: Peter Urbanec <openembedded-devel@urbanec.net>
5Signed-off-by: Saul Wold <sgw@linux.intel.com>
6
7--- /dev/null
8+++ b/meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch
9@@ -0,0 +1,21 @@
10+--- a/gcc/varpool.c 2014/10/05 02:50:01 215895
11++++ b/gcc/varpool.c 2014/10/05 04:52:19 215896
12+@@ -329,8 +329,16 @@
13+
14+ /* Variables declared 'const' without an initializer
15+ have zero as the initializer if they may not be
16+- overridden at link or run time. */
17+- if (!DECL_INITIAL (real_decl)
18++ overridden at link or run time.
19++
20++ It is actually requirement for C++ compiler to optimize const variables
21++ consistently. As a GNU extension, do not enfore this rule for user defined
22++ weak variables, so we support interposition on:
23++ static const int dummy = 0;
24++ extern const int foo __attribute__((__weak__, __alias__("dummy")));
25++ */
26++ if ((!DECL_INITIAL (real_decl)
27++ || (DECL_WEAK (decl) && !DECL_COMDAT (decl)))
28+ && (DECL_EXTERNAL (decl) || decl_replaceable_p (decl)))
29+ return error_mark_node;
30+
31