Upstream proposed different fix for the Errno by modifying global CPP flags. I think this an overkill preventing people from using the new GCC features. So I roll in now the fix local to the Errno module for now.
81 lines
2.5 KiB
Diff
81 lines
2.5 KiB
Diff
From 93d77ec43f0de26bc9ead97d204a680a902d59e1 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
|
Date: Wed, 11 Feb 2015 15:46:37 +0100
|
|
Subject: [PATCH] Fix Errno.pm generation for gcc-5.0
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
gcc-5.0 -E interleaves now line numbers with expended macros, so that
|
|
the generated errno.c will be preprocessed to
|
|
|
|
EBFONT => [[
|
|
59
|
|
]]
|
|
|
|
which is hard to parse in in line-based reader.
|
|
|
|
So use -P option with gcc >= 5.0. Global -P usage would break makedepend,
|
|
global -ftrack-macro-expansion=0 would break lib/h2ph.t.
|
|
|
|
RT#123784
|
|
|
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
---
|
|
ext/Errno/Errno_pm.PL | 23 +++++++++++++++++------
|
|
1 file changed, 17 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
|
|
index 55ad01a..63b5916 100644
|
|
--- a/ext/Errno/Errno_pm.PL
|
|
+++ b/ext/Errno/Errno_pm.PL
|
|
@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker;
|
|
use Config;
|
|
use strict;
|
|
|
|
-our $VERSION = "1.20_03";
|
|
+our $VERSION = "1.20_04";
|
|
|
|
my %err = ();
|
|
|
|
@@ -225,20 +225,31 @@ sub write_errno_pm {
|
|
{ # BeOS (support now removed) did not enter this block
|
|
# invoke CPP and read the output
|
|
|
|
+ my $inhibit_linemarkers = '';
|
|
+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) {
|
|
+ # GCC 5.0 interleaves expanded macros with line numbers breaking
|
|
+ # each line into multiple lines. RT#123784
|
|
+ $inhibit_linemarkers = ' -P';
|
|
+ }
|
|
+
|
|
if ($^O eq 'VMS') {
|
|
- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}";
|
|
+ my $cpp = "$Config{cppstdin} $Config{cppflags}" .
|
|
+ $inhibit_linemarkers . " $Config{cppminus}";
|
|
$cpp =~ s/sys\$input//i;
|
|
open(CPPO,"$cpp errno.c |") or
|
|
die "Cannot exec $Config{cppstdin}";
|
|
} elsif ($IsMSWin32 || $^O eq 'NetWare') {
|
|
- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or
|
|
- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'";
|
|
+ my $cpp = "$Config{cpprun} $Config{cppflags}" .
|
|
+ $inhibit_linemarkers;
|
|
+ open(CPPO,"$cpp errno.c |") or
|
|
+ die "Cannot run '$cpp errno.c'";
|
|
} elsif ($IsSymbian) {
|
|
- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -";
|
|
+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" .
|
|
+ $inhibit_linemarkers ." -";
|
|
open(CPPO,"$cpp < errno.c |")
|
|
or die "Cannot exec $cpp";
|
|
} else {
|
|
- my $cpp = default_cpp();
|
|
+ my $cpp = default_cpp() . $inhibit_linemarkers;
|
|
open(CPPO,"$cpp < errno.c |")
|
|
or die "Cannot exec $cpp";
|
|
}
|
|
--
|
|
1.9.3
|
|
|