From b2ad2dce9553e7cc6e9cae7744bce5aae6d0dcf3 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 18 Jan 2023 15:03:56 +0100 Subject: [PATCH] Resolves: #2159759 - Add definition of OPTIMIZE to .ph files, if optimizing is used --- ...-definition-of-OPTIMIZE-to-.ph-files.patch | 39 +++++++++++++++++++ perl.spec | 11 +++++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch diff --git a/perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch b/perl-5.36.0-Add-definition-of-OPTIMIZE-to-.ph-files.patch new file mode 100644 index 0000000..083d8f9 --- /dev/null +++ b/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/perl.spec b/perl.spec index 1847b5c..39066b5 100644 --- a/perl.spec +++ b/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: 479%{?dist} +Release: 480%{?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 #2159759 +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 @@ -4342,6 +4345,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 @@ -4399,6 +4403,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 #2159759)' \ %{nil} %endif @@ -7171,6 +7176,10 @@ popd # Old changelog entries are preserved in CVS. %changelog +* Wed Jan 18 2023 Jitka Plesnikova - 4:5.32.1-480 +- Add definition of OPTIMIZE to .ph files, if optimizing is used + (bug#2159759) + * Mon Aug 09 2021 Mohan Boddu - 4:5.32.1-479 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688