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