diff --git a/SOURCES/perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch b/SOURCES/perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch new file mode 100644 index 0000000..083d8f9 --- /dev/null +++ b/SOURCES/perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch @@ -0,0 +1,39 @@ +From 6d9d949fb4962e32636aee48a948081d8936d318 Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Wed, 11 Jan 2023 09:12:18 +0100 +Subject: [PATCH] Add definition of OPTIMIZE to .ph files + +The fortify.h header includes a test to ensure that -O is used when +compiling with _FORTIFY_SOURCE, and the header looks for OPTIMIZE, which +is set by the compiler whenever -O is used. Perl translates this test +to the .ph file, but nothing ever sets OPTIMIZE. This causes a warning +for anything that uses features.ph. + +_FORTIFY_SOURCE is defined in /usr/lib64/perl5/_h2ph_pre.ph which is +generated by h2ph. It uses value of @Config{'ccsymbols', 'cppsymbols', +'cppccsymbols'} which does not contain definition for OPTIMIZE. + +The patch updated h2ph to add OPTIMIZE if -O is used. +--- + utils/h2ph.PL | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/utils/h2ph.PL b/utils/h2ph.PL +index afa53c2..3950d11 100644 +--- a/utils/h2ph.PL ++++ b/utils/h2ph.PL +@@ -865,6 +865,11 @@ sub _extract_cc_defines + my $allsymbols = join " ", + @Config{'ccsymbols', 'cppsymbols', 'cppccsymbols'}; + ++ # If optimizing -O2 is used, add the definition ++ if ($Config{'ccflags'} =~ /(?:\s+|^)-O([\d]+)(?:\s+|$)/) { ++ $allsymbols .= " __OPTIMIZE__=$1"; ++ } ++ + # Split compiler pre-definitions into 'key=value' pairs: + while ($allsymbols =~ /([^\s]+)=((\\\s|[^\s])+)/g) { + $define{$1} = $2; +-- +2.39.0 + diff --git a/SPECS/perl.spec b/SPECS/perl.spec index 2b02a61..1d3c9b6 100644 --- a/SPECS/perl.spec +++ b/SPECS/perl.spec @@ -100,7 +100,7 @@ License: GPL+ or Artistic Epoch: %{perl_epoch} Version: %{perl_version} # release number must be even higher, because dual-lived modules will be broken otherwise -Release: 471%{?dist} +Release: 472%{?dist} Summary: Practical Extraction and Report Language Url: https://www.perl.org/ Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz @@ -286,6 +286,9 @@ Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li # Link XS modules to libperl.so with EU::MM on Linux, bug #960048 Patch201: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch +# If optimizing -O is used, add the definition to .ph files, bug #2159760 +Patch202: perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch + # Update some of the bundled modules # see http://fedoraproject.org/wiki/Perl/perl.spec for instructions @@ -4337,6 +4340,7 @@ you're not running VMS, this module does nothing. %patch58 -p1 %patch200 -p1 %patch201 -p1 +%patch202 -p1 %if !%{defined perl_bootstrap} # Local patch tracking @@ -4394,6 +4398,7 @@ perl -x patchlevel.h \ 'Fedora Patch57: Fix an arithmetic left shift of a minimal integer value (GH#18639)' \ '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' \ + 'Fedora Patch202: Add definition of OPTIMIZE to .ph files (bug #2159760)' \ %{nil} %endif @@ -7103,6 +7108,10 @@ popd # Old changelog entries are preserved in CVS. %changelog +* Wed Jan 18 2023 Jitka Plesnikova - 4:5.32.1-472 +- Add definition of OPTIMIZE to .ph files, if optimizing is used + (bug#2159760) + * Wed Jun 23 2021 Petr Pisar - 4:5.32.1-471 - XSLoader requires DynaLoader