]> ruderich.org/simon Gitweb - blhc/blhc.git/commitdiff
Ignore compiler lines with no files with extensions.
authorSimon Ruderich <simon@ruderich.org>
Thu, 29 Mar 2012 15:06:20 +0000 (17:06 +0200)
committerSimon Ruderich <simon@ruderich.org>
Thu, 29 Mar 2012 15:06:20 +0000 (17:06 +0200)
This prevents many false positives and shouldn't cause any false
negatives.

Also update $file_extension_regex to exclude ',', ';' and ':' from the
file extension which prevents additional false positives.

bin/blhc
t/logs/configure
t/logs/good
t/logs/make
t/tests.t

index b4d87e45eb9dc856e574906e4958afc04f4317d5..4a1c0b1a5b992f089932136e21fee6d8711b81b4 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -144,7 +144,7 @@ my $file_extension_regex = qr/
     \s
     \S+         # Filename without extension.
     \.
-    ([^\\.\s]+) # File extension.
+    ([^\\.,;:\s]+) # File extension.
     (?=\s|\\)   # At end of word. Can't use \b because some files have non
                 # word characters at the end and because \b matches double
                 # extensions (like .cpp.o). Works always as all lines are
@@ -572,23 +572,21 @@ FILE: foreach my $file (@ARGV) {
                 }
 
                 # Ignore lines with no compiler commands.
-                next if $line !~ /\b$cc_regex(?:\s|\\)/o and not $non_verbose;
+                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+
-                                   $cc_regex_full
-                                   (?:\s-std=[a-z0-9:+]+)?\s*$
-                                 /xo
-                        or $line =~ /^\s*(?:- )?(?:HOST_)?(?:CC|CXX)\s*=\s*$cc_regex_full\s*$/o
-                        or $line =~ /^\s*-- Check for working (?:C|CXX) compiler: /
-                        or $line =~ /^\s*(?:echo )?Using [A-Z_]+\s*=\s*/;
-                # `make` output.
-                next if $line =~ /^Making [a-z]+ in \S+/; # e.g. "[...] in c++"
+                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.
index 623c5635ead62fc11da9826e6712e5b5b95d1366..b390ba8036463c764f5de401f43bcde59f0c0df0 100644 (file)
@@ -29,6 +29,8 @@ Host C compiler   gcc
   Compiler:              s390x-linux-gnu-gcc
   Compiler:              sparc-linux-gnu-gcc
 
+  C++ Compiler...: g++ -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -Wall -D_FORTIFY_SOURCE=2
+
   - General Compile FLAGS
       - CC  = mpicc
       - CXX = g++
@@ -68,6 +70,12 @@ Configuration:
 -- Check for working CXX compiler: /usr/bin/c++
 -- Check for working CXX compiler: /usr/bin/c++ -- works
 -- Check for working CXX compiler: /usr/bin/c++ -- works
+-- Use g++ visibility support..... YES
+
+  setting CPP to "sparc-linux-gnu-gcc -E"
+
+Looking for compiler... gcc is executable.
+Looking for compiler... cc is executable.
 
 configure: using CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC
 configure: using LDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now  -Wl,--as-needed
@@ -83,6 +91,8 @@ Using ALL_CFLAGS=-D_FORTIFY_SOURCE=2  -g -O2 -fstack-protector --param=ssp-buffe
 echo Using LDFLAGS="-Wl,-z,relro -Wl,--as-needed -fPIE -pie -Wall"
 Using LDFLAGS=-Wl,-z,relro -Wl,--as-needed -fPIE -pie -Wall
 
++ CC=cc CFLAGS=-g -O2 -Wformat -Wformat-security -Werror=format-security -Wall -Wformat LDFLAGS=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed
+
 CC      = cc
 
 CC=gcc
index 74057f5e52a9c901ebd560ae11d2afb5e847539c..180a64d81ec5dbe23ca1e7e6ed1543073d01676d 100644 (file)
@@ -31,3 +31,5 @@ gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-securit
 gcc -E -D_FORTIFY_SOURCE=2 test.c
 
 gcc -Wl,-z,relro -o test test.cpp.o
+
+command --cc test
index 1b5b31e405dec7e21adadead15e9bdee3f5a9252..57584da28cd95147b3bd9024aee67770af8b157e 100644 (file)
@@ -4,3 +4,9 @@ dpkg-buildpackage: source package test
 
 Making all in c++
 Making install in c++
+
+make CC="gcc -Wall -Wextra" CFLAGS="-fPIE"
+
+CC=gcc /usr/bin/program
+
+/usr/bin/make CC=g++ DBGFLAGS="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -Wl,-z,relro -Wl,--as-needed"
index 949ed88b6b111e4beef32c0354fdd7224117a668..69da46599b8e7ca66a2e8e82c0efbe4a3c268227 100644 (file)
--- a/t/tests.t
+++ b/t/tests.t
@@ -19,7 +19,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 102;
+use Test::More tests => 104;
 
 
 sub is_blhc {
@@ -591,6 +591,10 @@ is_blhc 'buildd-verbose-build', '--buildd', 4,
         'W-compiler-flags-hidden 1 (of 5) hidden
 ';
 
+is_blhc 'make', '--buildd', 1,
+        'W-no-compiler-commands
+';
+
 
 # multiple files