tag 649058 patch thanks On Thu, Nov 17, 2011 at 08:53:45PM +0200, Niko Tyni wrote: > On Thu, Nov 17, 2011 at 09:30:22AM +0100, Julien Cristau wrote: > > Package: libdata-alias-perl > > Version: 1.15-1 > > Severity: serious > > Justification: fails to build from source (but built successfully in the > > past) > > > > t/06_alias_scope.t (Wstat: 10 Tests: 11 Failed: 0) > > > Non-zero wait status: 10 > > Just a note: reproducible on s390/zelenka.d.o with > > perl -Iblib/lib -Iblib/arch -MData::Alias -e '{alias local $x}'
> I suppose Data::Alias is corrupting the stack somehow. This is related to http://perl5.git.perl.org/perl.git/commit/c6bf6a65e4bf512beae58d59446046f4ca20372f The attached patch fixes it for me; tested on s390 and ia64 with all of Perl 5.10.1, 5.12.4 and 5.14.2. -- niko Tyni nt...@debian.org
>From 5886d259b3fa9c738696a37e0c302218af4805fe Mon Sep 17 00:00:00 2001 From: Niko Tyni <nt...@debian.org> Date: Thu, 17 Nov 2011 20:25:46 +0000 Subject: [PATCH] Save types have been stored in UVs on the save stack since 5.13.1 Upstream change c6bf6a65e4bf512beae58d59446 changed storage of save types on the stack from INT32s to UVs, so adapt accordingly. This probably only bites on big endian architectures with -Duse64bitint, where the UVs are bigger and the first byte doesn't contain the save type anymore. --- Alias.xs | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/Alias.xs b/Alias.xs index e3c9f76..28e2ed4 100644 --- a/Alias.xs +++ b/Alias.xs @@ -371,7 +371,11 @@ STATIC void da_alias(pTHX_ SV *a1, SV *a2, SV *value) { SSPUSHDXPTR((void (*)(pTHX_ void *)) da_restore_gvcv); SSPUSHPTR(SvREFCNT_inc_simple_NN((SV *) gv)); +#if (PERL_COMBI_VERSION >= 5013001) + SSPUSHUV(SAVEt_DESTRUCTOR_X); +#else SSPUSHINT(SAVEt_DESTRUCTOR_X); +#endif GvCV_set(gv, (CV *) SvREFCNT_inc_simple_NN(value)); } else { @@ -447,7 +451,11 @@ STATIC void da_localize_gvar(pTHX_ GP *gp, SV **sptr) { SSPUSHPTR(*sptr); SSPUSHDXPTR((void (*)(pTHX_ void *)) da_unlocalize_gvar); SSPUSHPTR(gp); +#if (PERL_COMBI_VERSION >= 5013001) + SSPUSHUV(SAVEt_DESTRUCTOR_X); +#else SSPUSHINT(SAVEt_DESTRUCTOR_X); +#endif ++gp->gp_refcnt; *sptr = Nullsv; } -- 1.7.7.3