use Getopt::Long ();
use Text::ParseWords ();
-our $VERSION = '0.02';
+our $VERSION = '0.03';
# CONSTANTS/VARIABLES
my @def_cppflags = ();
my @def_cppflags_fortify = (
'-D_FORTIFY_SOURCE=2', # must be first, see cppflags_fortify_broken()
+ # If you add another flag fix hack below (search for "Hack to fix").
);
my @def_cppflags_fortify_bad = (
# These flags may overwrite -D_FORTIFY_SOURCE=2.
+ '-U_FORTIFY_SOURCE',
'-D_FORTIFY_SOURCE=0',
'-D_FORTIFY_SOURCE=1',
);
'-fpic',
'-shared',
);
-# References to all flags checked by the parser.
+# References to all flags checked by the flag checker.
my @flag_refs = (
\@def_cflags,
\@def_cflags_format,
if (not $option_buildd) {
error_invalid_cmake($1);
} else {
- print "$buildd_tag{invalid_cmake} $1\n";
+ print "$buildd_tag{invalid_cmake}|$1|\n";
}
$exit |= $exit_code{invalid_cmake};
}
if (not $option_buildd) {
error_hardening_wrapper();
} else {
- print "$buildd_tag{hardening_wrapper}\n";
+ print "$buildd_tag{hardening_wrapper}||\n";
}
$exit |= $exit_code{hardening_wrapper};
next FILE;
if (not $option_buildd) {
print "No compiler commands!\n";
} else {
- print "$buildd_tag{no_compiler_commands}\n";
+ print "$buildd_tag{no_compiler_commands}||\n";
}
$exit |= $exit_code{no_compiler_commands};
next FILE;
@ldflags = (@ldflags, @def_ldflags_bindnow);
}
+ # Hack to fix cppflags_fortify_broken() if --ignore-flag
+ # -D_FORTIFY_SOURCE=2 is used to ignore missing fortification. Only works
+ # as long as @def_cppflags_fortify contains only one variable.
+ if (scalar @def_cppflags_fortify == 0) {
+ $harden_fortify = 0;
+ }
+
# Ignore flags for this arch if requested.
if ($arch and exists $option_ignore_arch_flag{$arch}) {
my @flag_refs = (\@cflags, \@cxxflags, \@cppflags, \@ldflags);
}
if (scalar @warning) {
local $" = ', '; # array join string
- print "$buildd_tag{flags_missing} @warning missing\n";
+ print "$buildd_tag{flags_missing}|@warning missing|\n";
}
if ($statistics{commands_nonverbose}) {
- printf "$buildd_tag{non_verbose_build} %d (of %d) hidden\n",
+ printf "$buildd_tag{non_verbose_build}|%d (of %d) hidden|\n",
$statistics{commands_nonverbose},
$statistics{commands},
}