# Expected (hardening) flags. All flags are used as regexps.
my @cflags = (
'-g',
- '-O2',
+ '-O(?:2|3)',
);
my @cflags_format = (
'-Wformat',
);
# Renaming rules for the output so the regex parts are not visible.
my %flag_renames = (
+ '-O(?:2|3)' => '-O2',
'-Wl,(-z,)?relro' => '-Wl,-z,relro',
'-Wl,(-z,)?now' => '-Wl,-z,now',
);
my $start = 0;
my $continuation = 0;
+my $complete_line = undef;
while (my $line = <>) {
# We skip over unimportant lines at the beginning to prevent false
# positives.
# Join lines, but leave the "\" in place so it's clear where the
# original line break was.
- chomp $input[-1];
- $input[-1] .= ' ' . $line;
+ chomp $complete_line;
+ $complete_line .= ' ' . $line;
+ }
+ # Line continuation, line ends with "\".
+ if ($line =~ /\\\s*$/) {
+ $continuation = 1;
+ # Start line continuation.
+ if (not defined $complete_line) {
+ $complete_line = $line;
+ }
+ next;
+ }
+
+ if (not $continuation) {
+ # Use the complete line if a line continuation occurred.
+ if (defined $complete_line) {
+ $line = $complete_line;
+ $complete_line = undef;
+ }
- } else {
# Ignore lines with no compiler commands.
next if $line !~ /\b$cc_regex(?:\s|\\)/ and not $non_verbose;
push @input, $line;
}
-
- # Line continuation, line ends with "\".
- if ($line =~ /\\\s*$/) {
- $continuation = 1;
- }
}
}