mirror of
https://git.yoctoproject.org/poky
synced 2026-03-06 15:29:40 +01:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
c0b0f695f5
commit
0fb3552632
@@ -70,6 +70,7 @@ SRC_URI = "\
|
||||
file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch \
|
||||
file://0054-gcc-Makefile.in-fix-parallel-building-failure.patch \
|
||||
file://0055-PR-rtl-optimization-61801.patch \
|
||||
file://0056-top-level-reorder_gcc-bug-61144.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1"
|
||||
SRC_URI[sha256sum] = "d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e"
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Originally-submitted-by: Peter Urbanec <openembedded-devel@urbanec.net>
|
||||
Signed-off-by: Saul Wold <sgw@linux.intel.com>
|
||||
|
||||
--- /dev/null
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch
|
||||
@@ -0,0 +1,21 @@
|
||||
+--- a/gcc/varpool.c 2014/10/05 02:50:01 215895
|
||||
++++ b/gcc/varpool.c 2014/10/05 04:52:19 215896
|
||||
+@@ -329,8 +329,16 @@
|
||||
+
|
||||
+ /* Variables declared 'const' without an initializer
|
||||
+ have zero as the initializer if they may not be
|
||||
+- overridden at link or run time. */
|
||||
+- if (!DECL_INITIAL (real_decl)
|
||||
++ overridden at link or run time.
|
||||
++
|
||||
++ It is actually requirement for C++ compiler to optimize const variables
|
||||
++ consistently. As a GNU extension, do not enfore this rule for user defined
|
||||
++ weak variables, so we support interposition on:
|
||||
++ static const int dummy = 0;
|
||||
++ extern const int foo __attribute__((__weak__, __alias__("dummy")));
|
||||
++ */
|
||||
++ if ((!DECL_INITIAL (real_decl)
|
||||
++ || (DECL_WEAK (decl) && !DECL_COMDAT (decl)))
|
||||
+ && (DECL_EXTERNAL (decl) || decl_replaceable_p (decl)))
|
||||
+ return error_mark_node;
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user