Fix for gcc bug 61144
PATCH 1/1 Fix for gcc bug 61144
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144 for details.
This patch is taken from the gcc repository and should be obsoleted by a gcc release after 4.9.1
The problem is severe enough (at least from my point of view) to need this patch until the next gcc release is available.
commit 03ae7912aadbf3b55b966a1367f07c7dbbddda80
Author: Peter Urbanec Date: Fri Oct 10 00:03:28 2014 +1100
gcc: 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.
meta/recipes-devtools/gcc/gcc-4.9.inc +1 -0
@@ -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"
meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch new file +25 -0
@@ -0,0 +1,25 @@ +--- /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; ++ +
Quoted 7 lines · Peter Urbanec
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61144 for details.
This patch is taken from the gcc repository and should be obsoleted by a gcc release after 4.9.1
The problem is severe enough (at least from my point of view) to need this patch until the next gcc release is available.
Wrong MP, this belongs to oe-core ML.
Quoted 60 lines
commit
03ae7912aadbf3b55b966a1367f07c7dbbddda80Author: Peter Urbanec Date: Fri Oct 10 00:03:28 2014 +1100gcc: 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_datastructures were being corrupted with the optimiser being set to any value other than -O0.meta/recipes-devtools/gcc/gcc-4.9.inc +1
-0@@ -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"meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch new file +25
-0@@ -0,0 +1,25 @@ +--- /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; ++ +Signature · 5 lines
-- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]