On Sun, Aug 10, 2014 at 09:47:12PM +0800, Hongxu Jia wrote: > 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 <[email protected]> > --- > .../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 <[email protected]> > +--- > + 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 )} \ > + "
This seems to be needed even withotu DEBUG_BUILD, see http://lists.openembedded.org/pipermail/openembedded-core/2014-August/095585.html and IMHO it's build time dependncy not runtime. > +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 > > -- > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: [email protected]
signature.asc
Description: Digital signature
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
