diff options
| author | Saul Wold <sgw@linux.intel.com> | 2014-10-10 23:46:16 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-10-11 08:11:03 +0100 |
| commit | 0fb3552632866f2b1ef8f76b0123b1dc865297a3 (patch) | |
| tree | f625b60ff6f7368e954b539c138e700d547ae1a0 | |
| parent | c0b0f695f537541cf3247afd8bfd19e471ed81d7 (diff) | |
| download | poky-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>
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.9.inc | 1 | ||||
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.9/0056-top-level-reorder_gcc-bug-61144.patch | 31 |
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 | " |
| 74 | SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1" | 75 | SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1" |
| 75 | SRC_URI[sha256sum] = "d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e" | 76 | SRC_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 | |||
| 2 | Upstream-Status: Backport | ||
| 3 | |||
| 4 | Originally-submitted-by: Peter Urbanec <openembedded-devel@urbanec.net> | ||
| 5 | Signed-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 | |||
