[OE-core] [PATCH 1/1] guile: workaround ice ssa corruption while DEBUG_BUILD
Hongxu Jia
hongxu.jia at windriver.com
Sun Aug 10 13:47:12 UTC 2014
Add:
MACHINE = "qemux86-64"
DEBUG_BUILD = "1"
to local.conf and there was a ssa corruption to build guile:
..
Unable to coalesce ssa_names 48 and 3476 which are marked as MUST COALESCE.
sp_48(ab) and sp_3476(ab)
guile-2.0.11/libguile/vm-engine.c: In function 'vm_debug_engine':
guile-2.0.11/libguile/vm.c:673:19: internal compiler error: SSA corruption
#define VM_NAME vm_debug_engine
^
guile-2.0.11/libguile/vm-engine.c:39:1: note: in expansion of macro 'VM_NAME'
VM_NAME (SCM vm, SCM program, SCM *argv, int nargs)
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
...
Tweak libguile/vm-i-system.c to add boundary value check to workaround it.
Also fix qa issue while DEBUG_BUILD:
...
WARNING: QA Issue: guile rdepends on ncurses-libncurses but its not a build dependency? [build-deps]
WARNING: QA Issue: guile rdepends on readline but its not a build dependency? [build-deps]
...
[YOCTO #6411]
Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
---
.../files/workaround-ice-ssa-corruption.patch | 52 ++++++++++++++++++++++
meta/recipes-devtools/guile/guile_2.0.11.bb | 8 +++-
2 files changed, 59 insertions(+), 1 deletion(-)
create mode 100644 meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch
diff --git a/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch b/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch
new file mode 100644
index 0000000..1363d63
--- /dev/null
+++ b/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch
@@ -0,0 +1,52 @@
+libguile/vm-i-system.c: workaround ice ssa corruption while compiling with option -g -O
+
+While compiling with option -g -O, there was a ssa corruption:
+..
+Unable to coalesce ssa_names 48 and 3476 which are marked as MUST COALESCE.
+sp_48(ab) and sp_3476(ab)
+guile-2.0.11/libguile/vm-engine.c: In function 'vm_debug_engine':
+guile-2.0.11/libguile/vm.c:673:19: internal compiler error: SSA corruption
+ #define VM_NAME vm_debug_engine
+ ^
+guile-2.0.11/libguile/vm-engine.c:39:1: note: in expansion of macro 'VM_NAME'
+ VM_NAME (SCM vm, SCM program, SCM *argv, int nargs)
+ ^
+Please submit a full bug report,
+with preprocessed source if appropriate.
+See <http://gcc.gnu.org/bugs.html> for instructions.
+...
+
+Tweak libguile/vm-i-system.c to add boundary value check to workaround it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
+---
+ libguile/vm-i-system.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
+index 5057fb0..8d31214 100644
+--- a/libguile/vm-i-system.c
++++ b/libguile/vm-i-system.c
+@@ -625,10 +625,13 @@ VM_DEFINE_INSTRUCTION (47, bind_optionals_shuffle, "bind-optionals/shuffle", 6,
+ /* now shuffle up, from walk to ntotal */
+ {
+ scm_t_ptrdiff nshuf = sp - walk + 1, i;
+- sp = (fp - 1) + ntotal + nshuf;
+- CHECK_OVERFLOW ();
+- for (i = 0; i < nshuf; i++)
+- sp[-i] = walk[nshuf-i-1];
++ if (nshuf > 0)
++ {
++ sp = (fp - 1) + ntotal + nshuf;
++ CHECK_OVERFLOW ();
++ for (i = 0; i < nshuf; i++)
++ sp[-i] = walk[nshuf-i-1];
++ }
+ }
+ /* and fill optionals & keyword args with SCM_UNDEFINED */
+ while (walk <= (fp - 1) + ntotal)
+--
+1.9.1
+
diff --git a/meta/recipes-devtools/guile/guile_2.0.11.bb b/meta/recipes-devtools/guile/guile_2.0.11.bb
index d19460a..e380bed 100644
--- a/meta/recipes-devtools/guile/guile_2.0.11.bb
+++ b/meta/recipes-devtools/guile/guile_2.0.11.bb
@@ -21,6 +21,9 @@ SRC_URI = "${GNU_MIRROR}/guile/guile-${PV}.tar.xz \
file://arm_endianness.patch \
"
+SRC_URI_append_class-target = " \
+ ${@base_conditional( "DEBUG_BUILD", "1", " file://workaround-ice-ssa-corruption.patch", "", d )} \
+ "
# file://debian/0001-Change-guile-to-guile-X.Y-for-info-pages.patch
# file://opensuse/guile-turn-off-gc-test.patch
@@ -35,7 +38,10 @@ DEPENDS = "libunistring bdwgc gmp libtool libffi"
# add guile-native only to the target recipe's DEPENDS
DEPENDS_append_class-target = " guile-native libatomics-ops"
-RDEPENDS_${PN}_append_libc-glibc_class-target = "glibc-gconv-iso8859-1"
+RDEPENDS_${PN}_append_class-target = " \
+ ${@base_conditional( "DEBUG_BUILD", "1", " readline ncurses", "", d )} \
+ "
+RDEPENDS_${PN}_append_libc-glibc_class-target = " glibc-gconv-iso8859-1"
EXTRA_OECONF += "${@['--without-libltdl-prefix --without-libgmp-prefix --without-libreadline-prefix', ''][bb.data.inherits_class('native',d)]}"
--
1.9.1
More information about the Openembedded-core
mailing list