X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Fblhc;h=38466e4cca55187111ec244577cd12461dc384ad;hb=cb6df05acfa32fe06b4f980422fd4b38c3239c0e;hp=e17c377d92f5160355b5ee082d9d9fbc1f2d3070;hpb=273f7a78980493d607823c32e364e4efe901c879;p=blhc%2Fblhc.git diff --git a/bin/blhc b/bin/blhc index e17c377..38466e4 100755 --- a/bin/blhc +++ b/bin/blhc @@ -48,7 +48,7 @@ my @source_preprocess_compile_cpp = ( # C++ qw( cc cp cxx cpp CPP c++ C ), # Objective-C++ - qw( mm Mr), + qw( mm M ), ); my @source_preprocess_compile = ( # C @@ -62,7 +62,7 @@ my @source_preprocess_compile = ( ); my @source_preprocess_no_compile = ( # Assembly - qw( s ), + qw( S sx ), ); my @source_preprocess = ( @source_preprocess_compile, @@ -87,7 +87,7 @@ my @source_no_preprocess_compile = ( ); my @source_no_preprocess_no_compile = ( # Assembly - qw( S sx ), + qw( s ), ); my @source_no_preprocess = ( @source_no_preprocess_compile, @@ -441,7 +441,8 @@ if (not Getopt::Long::GetOptions( 'color' => \$option_color, 'arch=s' => \$option_arch, 'buildd' => \$option_buildd, - )) { + ) + or scalar @ARGV == 0) { require Pod::Usage; Pod::Usage::pod2usage(2); } @@ -622,40 +623,38 @@ FILE: foreach my $file (@ARGV) { next; } - if (not $continuation) { - # Use the complete line if a line continuation occurred. - if (defined $complete_line) { - $line = $complete_line; - $complete_line = undef; - } - - # Ignore lines with no compiler commands. - next if not $non_verbose - and not $line =~ /\b$cc_regex(?:\s|\\)/o; - # Ignore lines with no filenames with extensions. May miss - # some non-verbose builds (e.g. "gcc -o test" [sic!]), but - # shouldn't be a problem as the log will most likely contain - # other non-verbose commands which are detected. - next if not $non_verbose - and not $line =~ /$file_extension_regex/o; - - # Ignore false positives. - # - # `./configure` output. - next if not $non_verbose - and $line =~ /^(?:checking|(?:C|c)onfigure:) /; - next if $line =~ /^\s*(?:Host\s+)?(?:C(?:\+\+)?\s+)? - (?:C|c)ompiler[\s.]*:?\s+ - /xo; - next if $line =~ /^\s*(?:- )?(?:HOST_)?(?:CC|CXX)\s*=\s*$cc_regex_full\s*$/o; - - # Check if additional hardening options were used. Used to - # ensure they are used for the complete build. - $harden_pie = 1 if any_flags_used($line, @def_cflags_pie, @def_ldflags_pie); - $harden_bindnow = 1 if any_flags_used($line, @def_ldflags_bindnow); - - push @input, $line; + # Use the complete line if a line continuation occurred. + if (defined $complete_line) { + $line = $complete_line; + $complete_line = undef; } + + # Ignore lines with no compiler commands. + next if not $non_verbose + and not $line =~ /\b$cc_regex(?:\s|\\)/o; + # Ignore lines with no filenames with extensions. May miss some + # non-verbose builds (e.g. "gcc -o test" [sic!]), but shouldn't be + # a problem as the log will most likely contain other non-verbose + # commands which are detected. + next if not $non_verbose + and not $line =~ /$file_extension_regex/o; + + # Ignore false positives. + # + # `./configure` output. + next if not $non_verbose + and $line =~ /^(?:checking|(?:C|c)onfigure:) /; + next if $line =~ /^\s*(?:Host\s+)?(?:C(?:\+\+)?\s+)? + (?:C|c)ompiler[\s.]*:?\s+ + /xo; + next if $line =~ /^\s*(?:- )?(?:HOST_)?(?:CC|CXX)\s*=\s*$cc_regex_full\s*$/o; + + # Check if additional hardening options were used. Used to ensure + # they are used for the complete build. + $harden_pie = 1 if any_flags_used($line, @def_cflags_pie, @def_ldflags_pie); + $harden_bindnow = 1 if any_flags_used($line, @def_ldflags_bindnow); + + push @input, $line; } } @@ -964,9 +963,18 @@ changes are in effect: =item +Print tags instead of normal warnings, see README file for a list of possible +tags. + +=item + Don't check hardening flags in old log files (if dpkg-dev << 1.16.1 is detected). +=item + +Don't require Term::ANSIColor. + =back =item B<--color>