X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=bin%2Fblhc;h=0c2ba90e922ba4e6a4887f8d98cf7561825bbccf;hp=d2a8771515e5e01d8a3890db542cb7cf08244f21;hb=5dd19bb96effb0b40c26bb669dd0f8ef176ebf40;hpb=7d9ae6314e499d9e76bc32a0e1c4a5686bb59158 diff --git a/bin/blhc b/bin/blhc index d2a8771..0c2ba90 100755 --- a/bin/blhc +++ b/bin/blhc @@ -51,6 +51,7 @@ my $warning_regex = qr/^(.+?):(\d+):\d+: warning: (.+?) \[(.+?)\]$/; # Regex to catch libtool commands and not lines which show commands executed # by libtool (e.g. libtool: link: ...). my $libtool_regex = qr/\blibtool\s.*--mode=/; +my $libtool_link_regex = qr/\blibtool: link: /; # List of source file extensions which require preprocessing. my @source_preprocess_compile_cpp = ( @@ -710,7 +711,7 @@ foreach my $file (@ARGV) { my $harden_pie = $option_pie; # defaults to 0 # Does this build log use ada? Ada also uses gcc as compiler but uses - # different CFLAGS. But only perform ada checks if an ada compiler used + # different CFLAGS. But only perform ada checks if an ada compiler is used # for performance reasons. my $ada = 0; @@ -982,7 +983,7 @@ foreach my $file (@ARGV) { # Option or auto detected. if ($arch) { - # The following was partially copied from dpkg-dev 1.17.11 + # The following was partially copied from dpkg-dev 1.18.2 # (/usr/share/perl5/Dpkg/Vendor/Debian.pm, add_hardening_flags()), # copyright Raphaël Hertzog , Kees Cook # , Canonical, Ltd. licensed under GPL version 2 or @@ -1101,6 +1102,8 @@ LINE: # is_non_verbose_build()). next if $skip; + my $orig_line = $line; + # Remove everything until and including the compiler command. Makes # checks easier and faster. $line =~ s/^.*?$cc_regex//o; @@ -1151,7 +1154,11 @@ LINE: } # These file types require preprocessing. if (extension_found(\%extensions_preprocess, @extensions)) { - $preprocess = 1; + # Prevent false positives with "libtool: link: g++ -include test.h + # .." compiler lines. + if ($orig_line !~ /$libtool_link_regex/o) { + $preprocess = 1; + } } if (not $flag_preprocess) {