summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2018-12-30 22:26:22 +0100
committerAndreas K. Hüttel <dilfridge@gentoo.org>2018-12-30 22:26:38 +0100
commite576790a512945d1884868c55e87721b4d75b56b (patch)
treec01aed0a00185ea28c34edb709e75e8f19ce203d /dev-lang/perl/files
parentmedia-libs/libgii: mark s390 stable (diff)
downloadgentoo-e576790a512945d1884868c55e87721b4d75b56b.tar.gz
gentoo-e576790a512945d1884868c55e87721b4d75b56b.tar.bz2
gentoo-e576790a512945d1884868c55e87721b4d75b56b.zip
dev-lang/perl: Add hppa workaround, bug 634162
Patch from Debian, see https://bugs.debian.org/869122 Closes: https://bugs.gentoo.org/634162 Package-Manager: Portage-2.3.53, Repoman-2.3.12 Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Diffstat (limited to 'dev-lang/perl/files')
-rw-r--r--dev-lang/perl/files/perl-5.26.2-hppa.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/dev-lang/perl/files/perl-5.26.2-hppa.patch b/dev-lang/perl/files/perl-5.26.2-hppa.patch
new file mode 100644
index 000000000000..83ed944353e5
--- /dev/null
+++ b/dev-lang/perl/files/perl-5.26.2-hppa.patch
@@ -0,0 +1,105 @@
+https://bugs.gentoo.org/634162
+
+Source:
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869122
+
+Index: perl-5.26.0/op.c
+===================================================================
+--- perl-5.26.0.orig/op.c
++++ perl-5.26.0/op.c
+@@ -14832,6 +14832,7 @@ Perl_custom_op_get_field(pTHX_ const OP
+ SV *keysv;
+ HE *he = NULL;
+ XOP *xop;
++ XOPRETANY any;
+
+ static const XOP xop_null = { 0, 0, 0, 0, 0 };
+
+@@ -14874,58 +14875,37 @@ Perl_custom_op_get_field(pTHX_ const OP
+ else
+ xop = INT2PTR(XOP *, SvIV(HeVAL(he)));
+ }
+- {
+- XOPRETANY any;
+- if(field == XOPe_xop_ptr) {
+- any.xop_ptr = xop;
+- } else {
+- const U32 flags = XopFLAGS(xop);
+- if(flags & field) {
+- switch(field) {
+- case XOPe_xop_name:
+- any.xop_name = xop->xop_name;
+- break;
+- case XOPe_xop_desc:
+- any.xop_desc = xop->xop_desc;
+- break;
+- case XOPe_xop_class:
+- any.xop_class = xop->xop_class;
+- break;
+- case XOPe_xop_peep:
+- any.xop_peep = xop->xop_peep;
+- break;
+- default:
+- NOT_REACHED; /* NOTREACHED */
+- break;
+- }
+- } else {
+- switch(field) {
+- case XOPe_xop_name:
+- any.xop_name = XOPd_xop_name;
+- break;
+- case XOPe_xop_desc:
+- any.xop_desc = XOPd_xop_desc;
+- break;
+- case XOPe_xop_class:
+- any.xop_class = XOPd_xop_class;
+- break;
+- case XOPe_xop_peep:
+- any.xop_peep = XOPd_xop_peep;
+- break;
+- default:
+- NOT_REACHED; /* NOTREACHED */
+- break;
+- }
+- }
++
++ if(field == XOPe_xop_ptr) {
++ any.xop_ptr = xop;
++ } else {
++ const U32 flags = XopFLAGS(xop);
++ switch(field) {
++ case XOPe_xop_name:
++ any.xop_name = (flags & field) ? xop->xop_name : XOPd_xop_name;
++ break;
++ case XOPe_xop_desc:
++ any.xop_desc = (flags & field) ? xop->xop_desc : XOPd_xop_desc;
++ break;
++ case XOPe_xop_class:
++ any.xop_class = (flags & field) ? xop->xop_class : XOPd_xop_class;
++ break;
++ case XOPe_xop_peep:
++ any.xop_peep = (flags & field) ? xop->xop_peep : XOPd_xop_peep;
++ break;
++ default:
++ NOT_REACHED; /* NOTREACHED */
++ break;
+ }
+- /* On some platforms (HP-UX, IA64) gcc emits a warning for this function:
+- * op.c: In function 'Perl_custom_op_get_field':
+- * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized]
+- * This is because on those platforms (with -DEBUGGING) NOT_REACHED
+- * expands to assert(0), which expands to ((0) ? (void)0 :
+- * __assert(...)), and gcc doesn't know that __assert can never return. */
+- return any;
+ }
++
++ /* On some platforms (HP-UX, IA64) gcc emits a warning for this function:
++ * op.c: In function 'Perl_custom_op_get_field':
++ * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized]
++ * This is because on those platforms (with -DEBUGGING) NOT_REACHED
++ * expands to assert(0), which expands to ((0) ? (void)0 :
++ * __assert(...)), and gcc doesn't know that __assert can never return. */
++ return any;
+ }
+
+ /*