summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/recipes-core/busybox/busybox/fix-ice-on-mips-while-compiling-with-g-O.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/meta/recipes-core/busybox/busybox/fix-ice-on-mips-while-compiling-with-g-O.patch b/meta/recipes-core/busybox/busybox/fix-ice-on-mips-while-compiling-with-g-O.patch
new file mode 100644
index 0000000000..d8bf5da696
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/fix-ice-on-mips-while-compiling-with-g-O.patch
@@ -0,0 +1,65 @@
+shell/ash.c: fix ice on mips while compiling with -g -O
+
+Build busybox on mips with -g -O, there is a ice failure:
+...
+shell/ash.c:8758:1: internal compiler error: in dwarf2out_var_location, at dwarf2out.c:21264
+...
+Please submit a full bug report,
+with preprocessed source if appropriate.
+See <http://gcc.gnu.org/bugs.html> for instructions.
+{standard input}: Assembler messages:
+{standard input}: Warning: missing .end at end of assembly
+{standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
+...
+
+The following line caused the ice failure on mips:
+...
+void evaltreenr(union node *, int) __attribute__ ((alias("evaltree"),__noreturn__));
+...
+So remove evaltreenr which was a alias of evaltree, and use evaltree
+to instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ shell/ash.c | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/shell/ash.c b/shell/ash.c
+index 71ef9a6..4462e40 100644
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -8490,11 +8490,6 @@ evaltree(union node *n, int flags)
+ TRACE(("leaving evaltree (no interrupts)\n"));
+ }
+
+-#if !defined(__alpha__) || (defined(__GNUC__) && __GNUC__ >= 3)
+-static
+-#endif
+-void evaltreenr(union node *, int) __attribute__ ((alias("evaltree"),__noreturn__));
+-
+ static void
+ evalloop(union node *n, int flags)
+ {
+@@ -8621,7 +8616,7 @@ evalsubshell(union node *n, int flags)
+ flags &= ~EV_TESTED;
+ nofork:
+ redirect(n->nredir.redirect, 0);
+- evaltreenr(n->nredir.n, flags);
++ evaltree(n->nredir.n, flags);
+ /* never returns */
+ }
+ status = 0;
+@@ -8740,7 +8735,7 @@ evalpipe(union node *n, int flags)
+ dup2(pip[1], 1);
+ close(pip[1]);
+ }
+- evaltreenr(lp->n, flags);
++ evaltree(lp->n, flags);
+ /* never returns */
+ }
+ if (prevfd >= 0)
+--
+1.9.1
+