+ # Ignore false positives when the line contains only CC=gcc but no
+ # other gcc command.
+ if ($line =~ /(.*)CC=$cc_regex_full(.*)/o) {
+ my $before = $1;
+ my $after = $2;
+ next if not $before =~ /$cc_regex_normal/o
+ and not $after =~ /$cc_regex_normal/o;
+ }
+ # Ignore false positives caused by gcc -v. It outputs a line
+ # looking like a normal compiler line but which is sometimes
+ # missing hardening flags, although the normal compiler line
+ # contains them.
+ next if $line =~ m{^\s+/usr/lib/gcc/$cc_regex_full_prefix/
+ [0-9.]+/cc1(?:plus)?}xo;
+ # Ignore false positive with `rm` which may remove files which
+ # look like a compiler executable thus causing the line to be
+ # treated as a normal compiler line.
+ next if $line =~ m{^\s*rm\s+};
+ next if $line =~ m{^\s*dwz\s+};
+ # Some build systems emit "gcc > file".
+ next if $line =~ m{$cc_regex_normal\s*>\s*\S+}o;
+ # Hex output may contain "cc".
+ next if $line =~ m#(?:\b[0-9a-fA-F]{2,}\b\s*){5}#;
+ # Meson build output
+ next if $line =~ /^C\+\+ linker for the host machine: /;
+ # Embedded `gcc -print-*` commands
+ next if $line =~ /`$cc_regex_normal\s*[^`]*-print-\S+`/;
+ # cmake checking for compiler flags without setting CPPFLAGS
+ next if $line =~ m{^\s*/usr/(bin|lib)/(ccache/)?c\+\+ -dM -E -c /usr/share/cmake-\S+/Modules/CMakeCXXCompilerABI\.cpp};