]> ruderich.org/simon Gitweb - blhc/blhc.git/commitdiff
Fix another Ada false positive for format flags
authorSimon Ruderich <simon@ruderich.org>
Sat, 10 Sep 2016 16:09:43 +0000 (18:09 +0200)
committerSimon Ruderich <simon@ruderich.org>
Sat, 10 Sep 2016 16:10:17 +0000 (18:10 +0200)
NEWS
bin/blhc
t/logs/ada
t/logs/ada-pbuilder
t/tests.t

diff --git a/NEWS b/NEWS
index 2f964cb564ae362da3e1d8043e412424b1462932..26a487eae3e1b4d165a424dc7130ccb1ebc086a9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,8 @@ Version 0.XX
 - Sync architecture specific hardening support with dpkg 1.18.10.
 - Fix false positive in "gcc > file" (Debian Bug #828789), reported by Mathieu
   Parent.
+- Fix another Ada false positive for format flags (Debian Bug #833939),
+  reported by Nicolas Boulenguez.
 
 
 Version 0.06
index c4e814c0cae8275355fdea6ca996170982c9a90f..1e774954e1131345c35e75f2c70875216e8be89a 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -89,10 +89,10 @@ my @source_no_preprocess_compile_cpp = (
     qw( mii ),
 );
 my @source_no_preprocess_compile_ada = (
+    # Ada source
+    qw( ada ),
     # Ada body
     qw( adb ),
-    # If you add another file, fix use of @source_no_preprocess_compile_ada
-    # below (search for $compile_ada).
 );
 my @source_no_preprocess_compile = (
     # C
@@ -106,11 +106,15 @@ my @source_no_preprocess_compile = (
     # Ada
     @source_no_preprocess_compile_ada,
 );
+my @source_no_preprocess_no_compile_ada = (
+    # Ada specification
+    qw( ads ),
+);
 my @source_no_preprocess_no_compile = (
     # Assembly
     qw( s ),
-    # Ada specification
-    qw( ads ),
+    # Ada
+    @source_no_preprocess_no_compile_ada,
 );
 my @source_no_preprocess = (
     @source_no_preprocess_compile,
@@ -161,6 +165,10 @@ my %extensions_compile_cpp = map { $_ => 1 } (
     @source_preprocess_compile_cpp,
     @source_no_preprocess_compile_cpp,
 );
+my %extensions_ada = map { $_ => 1 } (
+    @source_no_preprocess_compile_ada,
+    @source_no_preprocess_no_compile_ada,
+);
 my %extensions_object = map { $_ => 1 } (
     @object,
 );
@@ -1230,10 +1238,9 @@ LINE:
             $compile_cpp = 1;
         # Ada needs special CFLAGS, use them if only ada files are compiled.
         } elsif ($ada
-                    and $compile
-                    and array_equal(\@extensions,
-                                    \@source_no_preprocess_compile_ada)) {
+                and extension_found(\%extensions_ada, @extensions)) {
             $compile_ada = 1;
+            $preprocess = 0; # Ada uses no CPPFLAGS
             @cflags_backup = @cflags;
             @cflags        = @cflags_ada;
         }
index c6f45fb354660bb0d32d0726ddcaaa6ef868ee4b..8e6c59694bde4c34a13158c8817f962bdc5e86c7 100644 (file)
@@ -14,3 +14,9 @@ gcc-4.6 -c -fPIC -g -O2 -fstack-protector-strong -gnatn -gnatw.eH test-d.ads
 
 gcc -c -g -O2 test.c
 gcc -g -O2 test.c
+
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -fstack-protector-strong -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -fstack-protector-strong -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
+
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
index a6f4d3b52697b690df8b52c079e95c64c212653b..9c75d30a9071ecdc1b46b8ce368455e6a98349ee 100644 (file)
@@ -15,3 +15,9 @@ gcc-4.6 -c -fPIC -g -O2 -fstack-protector-strong -gnatn -gnatw.eH test-d.ads
 
 gcc -c -g -O2 test.c
 gcc -g -O2 test.c
+
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -fstack-protector-strong -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -fstack-protector-strong -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
+
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
index 8050601516ae9e7b6ad49b992ef99bf512631988..bd5405072db78d9b91433a49428cac43a7db8fe1 100644 (file)
--- a/t/tests.t
+++ b/t/tests.t
@@ -751,11 +751,13 @@ LDFLAGS missing (-fPIE -pie -Wl,-z,relro -Wl,-z,now): g++-4.6 -Wl,-z,defs -o tes
 
 my $ada = 'CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc-4.6 -c -fPIC -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security test.c
 LDFLAGS missing (-Wl,-z,relro): /usr/bin/gcc-4.6 -shared -lgnat-4.6 -o libtest.so.2 test-a.o test-b.o test-c.o -Wl,--as-needed
-CFLAGS missing (-fstack-protector-strong -Wformat -Werror=format-security): gcc -c -g -O2 test.c
+CFLAGS missing (-fPIE -fstack-protector-strong -Wformat -Werror=format-security): gcc -c -g -O2 test.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c -g -O2 test.c
-CFLAGS missing (-fstack-protector-strong -Wformat -Werror=format-security): gcc -g -O2 test.c
+CFLAGS missing (-fPIE -fstack-protector-strong -Wformat -Werror=format-security): gcc -g -O2 test.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -g -O2 test.c
-LDFLAGS missing (-Wl,-z,relro): gcc -g -O2 test.c
+LDFLAGS missing (-fPIE -pie -Wl,-z,relro): gcc -g -O2 test.c
+CFLAGS missing (-fstack-protector-strong): gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+CFLAGS missing (-fstack-protector-strong): gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
 ';
 is_blhc 'ada', '', 8,
         $ada;