]> ruderich.org/simon Gitweb - blhc/blhc.git/blobdiff - bin/blhc
Release 0.03.
[blhc/blhc.git] / bin / blhc
index c8260e58dc55cc01f939361155d834a9b9a74679..712d16cb7d37c7cb24f5ab5d0274304b06b46d7e 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -24,7 +24,7 @@ use warnings;
 use Getopt::Long ();
 use Text::ParseWords ();
 
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 
 # CONSTANTS/VARIABLES
@@ -172,9 +172,11 @@ my @def_cxxflags = (
 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',
 );
@@ -194,7 +196,7 @@ my @def_ldflags_pic = (
     '-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,
@@ -862,6 +864,13 @@ foreach my $file (@ARGV) {
         @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);