mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-28 11:43:25 +02:00
67 lines
2.3 KiB
Diff
67 lines
2.3 KiB
Diff
From 96bcd6ed97ff05f5b421005f23973279dbfcafbf 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 1/2] Fix Errno.pm generation for gcc-5.0
|
|
|
|
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
|
|
---
|
|
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 3dadfce..c6bfa06 100644
|
|
--- a/ext/Errno/Errno_pm.PL
|
|
+++ b/ext/Errno/Errno_pm.PL
|
|
@@ -215,20 +215,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";
|
|
}
|
|
--
|
|
2.3.0
|
|
|