Skip to contentSkip to conversation

Fix for gcc bug 61144

PATCH In review Peter Urbanec 2 participants 2 messages Oct 9, 2014 – Oct 10, 2014

lore
Share & tools
lore
#0 lore raw

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
index 25778bd..9a66cd2 100644
@@ -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
new file mode 100644
index 0000000..11fa969
@@ -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;
++ 
+
#1 lore raw
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 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
index 25778bd..9a66cd2 100644
@@ -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
new file mode 100644
index 0000000..11fa969
@@ -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]