From 0721cd5f0ea576eadd40dfcbcef9dec65c931892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 9 Aug 2017 15:59:39 +0200 Subject: [PATCH] Fix compiler warnings in code generated by ExtUtils::Constant --- ...arnings-due-to-mismatched-types-in-p.patch | 45 ++++++++++++ ...7.2-EU-Constant-avoid-uninit-warning.patch | 69 +++++++++++++++++++ perl.spec | 14 ++++ 3 files changed, 128 insertions(+) create mode 100644 perl-5.27.2-Avoid-compiler-warnings-due-to-mismatched-types-in-p.patch create mode 100644 perl-5.27.2-EU-Constant-avoid-uninit-warning.patch diff --git a/perl-5.27.2-Avoid-compiler-warnings-due-to-mismatched-types-in-p.patch b/perl-5.27.2-Avoid-compiler-warnings-due-to-mismatched-types-in-p.patch new file mode 100644 index 0000000..d5593b6 --- /dev/null +++ b/perl-5.27.2-Avoid-compiler-warnings-due-to-mismatched-types-in-p.patch @@ -0,0 +1,45 @@ +From 357c35e6f18e65f372e7a1b22ee39a3c7c9e5810 Mon Sep 17 00:00:00 2001 +From: Robin Barker +Date: Mon, 17 Dec 2012 18:20:14 +0100 +Subject: [PATCH] Avoid compiler warnings due to mismatched types in *printf + format strings. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +gcc (and probably others) was warning about a mismatch for between `int` +(implied by the format %d) and the actual type passed, `line_t`. Avoid this +by explicitly casting to UV, and using UVuf. + +CPAN #63832 + +Signed-off-by: Petr Písař +--- + cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm +index 545d322..c7e6d05 100644 +--- a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm ++++ b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm +@@ -629,13 +629,14 @@ EOA + if ((C_ARRAY_LENGTH(values_for_notfound) > 1) + ? hv_exists_ent(${c_subname}_missing, sv, 0) : 0) { + sv = newSVpvf("Your vendor has not defined $package_sprintf_safe macro %" SVf +- ", used at %" COP_FILE_F " line %d\\n", sv, +- COP_FILE(cop), CopLINE(cop)); ++ ", used at %" COP_FILE_F " line %" UVuf "\\n", ++ sv, COP_FILE(cop), (UV)CopLINE(cop)); + } else + #endif + { + sv = newSVpvf("%"SVf" is not a valid $package_sprintf_safe macro at %" +- COP_FILE_F " line %d\\n", sv, COP_FILE(cop), CopLINE(cop)); ++ COP_FILE_F " line %" UVuf "\\n", ++ sv, COP_FILE(cop), (UV)CopLINE(cop)); + } + croak_sv(sv_2mortal(sv)); + EOC +-- +2.9.4 + diff --git a/perl-5.27.2-EU-Constant-avoid-uninit-warning.patch b/perl-5.27.2-EU-Constant-avoid-uninit-warning.patch new file mode 100644 index 0000000..e330518 --- /dev/null +++ b/perl-5.27.2-EU-Constant-avoid-uninit-warning.patch @@ -0,0 +1,69 @@ +From 389f3ef2fdfbba2c2816e7334a69a5f540c0a33d Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Mon, 15 Dec 2014 16:14:13 +0000 +Subject: [PATCH] EU::Constant: avoid 'uninit' warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The code generated by ExtUtils::Constant can look something like: + +static int +constant (..., IV *iv_return) { + switch (...) { + case ...: + *iv_return = ...; + return PERL_constant_ISIV; + ... + } +} + +{ + int type; + IV iv; + type = constant(..., &iv); + switch (type) { + case PERL_constant_ISIV: + PUSHi(iv); + ... + } +} + +and the compiler isn't clever enough to realise that the value of iv +is only used in the code path where its been set. + +So initialise it to zero to shut gcc up. Ditto nv and pv. + +Signed-off-by: Petr Písař +--- + cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm +index 0dc9258..cf0e1ca 100644 +--- a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm ++++ b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm +@@ -198,17 +198,17 @@ $XS_subname(sv) + EOT + + if ($params->{IV}) { +- $xs .= " IV iv;\n"; ++ $xs .= " IV iv = 0; /* avoid uninit var warning */\n"; + } else { + $xs .= " /* IV\t\tiv;\tUncomment this if you need to return IVs */\n"; + } + if ($params->{NV}) { +- $xs .= " NV nv;\n"; ++ $xs .= " NV nv = 0.0; /* avoid uninit var warning */\n"; + } else { + $xs .= " /* NV\t\tnv;\tUncomment this if you need to return NVs */\n"; + } + if ($params->{PV}) { +- $xs .= " const char *pv;\n"; ++ $xs .= " const char *pv = NULL; /* avoid uninit var warning */\n"; + } else { + $xs .= + " /* const char\t*pv;\tUncomment this if you need to return PVs */\n"; +-- +2.9.4 + diff --git a/perl.spec b/perl.spec index 868fda7..954398a 100644 --- a/perl.spec +++ b/perl.spec @@ -216,6 +216,14 @@ Patch53: perl-5.27.1-perl-131597-ensure-the-GV-slot-is-filled-for-our-foo # RT#130907 in upstream after 5.27.1 Patch54: perl-5.27.1-RT-130907-Fix-the-Unicode-Bug-in-split.patch +# Fix compiler warnings in code generated by ExtUtils::Constant, CPAN RT#63832, +# in upstream after 5.27.2 +Patch55: perl-5.27.2-Avoid-compiler-warnings-due-to-mismatched-types-in-p.patch + +# Fix compiler warnings in code generated by ExtUtils::Constant, CPAN RT#101487, +# in upstream after 5.27.2 +Patch56: perl-5.27.2-EU-Constant-avoid-uninit-warning.patch + # Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048 Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch @@ -2800,6 +2808,8 @@ Perl extension for Version Objects %patch52 -p1 %patch53 -p1 %patch54 -p1 +%patch55 -p1 +%patch56 -p1 %patch200 -p1 %patch201 -p1 @@ -2839,6 +2849,8 @@ perl -x patchlevel.h \ 'Fedora Patch52: Fix executing arybase::_tie_it() in Safe compartement (RT#131588)' \ 'Fedora Patch53: Fix handling attribute specification on our variables (RT#131597)' \ 'Fedora Patch54: Fix splitting non-ASCII strings if unicode_strings feature is enabled (RT#130907)' \ + 'Fedora Patch55: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#63832)' \ + 'Fedora Patch56: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#101487)' \ 'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \ 'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \ %{nil} @@ -5134,6 +5146,8 @@ popd - Fix executing arybase::_tie_it() in Safe compartement (RT#131588) - Fix handling attribute specification on our variables (RT#131597) - Fix splitting non-ASCII strings if unicode_strings feature is enabled (RT#130907) +- Fix compiler warnings in code generated by ExtUtils::Constant + (CPAN RT#63832, CPAN RT#101487) * Sat Jul 29 2017 Igor Gnatenko - 4:5.26.0-397 - Enable separate debuginfo back