[openssl] OpenSSL_1_1_1-stable update

Richard Levitte levitte at openssl.org
Thu Feb 28 12:09:17 UTC 2019


The branch OpenSSL_1_1_1-stable has been updated
       via  0342e42d864b7a670b4403389df057c4da6d7975 (commit)
       via  3dee23a6840add98798260e5faa76205e77120a5 (commit)
       via  d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f (commit)
       via  ed8a604958484e19408775fa20aa973638875330 (commit)
       via  cd7dc67c4460947b6139cd08bc23a84e3d8bb429 (commit)
      from  dbb1340314fcec37662d79720e6566fdd5a232e8 (commit)


- Log -----------------------------------------------------------------
commit 0342e42d864b7a670b4403389df057c4da6d7975
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Feb 26 23:18:02 2019 +0100

    Configure: support a few more "make variables" defaulting from env
    
    CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS
    
    (cherry picked from commit 8e7984e5783877c58cddc7b4e668401580ab4467)
    
    Reviewed-by: Paul Dale <paul.dale at oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8359)

commit 3dee23a6840add98798260e5faa76205e77120a5
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Feb 26 09:34:00 2019 +0100

    .travis.yml: change -std=c89 to -ansi
    
    For C, -ansi is equivalent to -std=c90
    For C++, -ansi is equivalent to -std=c++98
    
    We also place -ansi in CPPFLAGS instead of the usual command line config,
    to avoid getting it when linking (clang complains)
    
    (cherry picked from commit 874f785988c17991051d36a0407a87b36c463a94)
    
    Reviewed-by: Paul Dale <paul.dale at oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8359)

commit d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Feb 26 09:32:52 2019 +0100

    Configuration: divide devteam flags into language specific sets
    
    Some of the devteam flags are not for C++
    
    (cherry picked from commit e373c70a3e535b560f6b6bade914a724aa975c55)
    
    Reviewed-by: Paul Dale <paul.dale at oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8359)

commit ed8a604958484e19408775fa20aa973638875330
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Feb 25 11:43:00 2019 +0100

    Do buildtests on our public header files with C++ as well
    
    This ensures that we don't mistakenly use C++ keywords anywhere public.
    
    Related to #8313
    
    (cherry picked from commit 9f27d4bf32c0465270e1922365b21825a0f7a42a)
    
    Reviewed-by: Paul Dale <paul.dale at oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8359)

commit cd7dc67c4460947b6139cd08bc23a84e3d8bb429
Author: Richard Levitte <levitte at openssl.org>
Date:   Thu Feb 14 16:26:40 2019 +0100

    Configure: make --strict-warnings a regular user provided compiler option
    
    This makes `--strict-warnings` into a compiler pseudo-option, i.e. it
    gets treated the same way as any other compiler option given on the
    configuration command line, but is retroactively replaced by actual
    compiler warning options, depending on what compiler is used.
    
    This makes it easier to see in what order options are given to the
    compiler from the configuration command line, i.e. this:
    
        ./config -Wall --strict-warnings
    
    would give the compiler flags in the same order as they're given,
    i.e.:
    
        -Wall -Werror -Wno-whatever ...
    
    instead of what we got previously:
    
        -Werror -Wno-whatever ... -Wall
    
    (cherry picked from commit fcee53948b7f9a5951d42f4ee321e706ea6b4b84)
    
    Reviewed-by: Paul Dale <paul.dale at oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/8359)

-----------------------------------------------------------------------

Summary of changes:
 .travis.yml                           |   2 +-
 Configurations/90-team.norelease.conf |  10 ++-
 Configure                             | 131 +++++++++++++++++++---------------
 test/build.info                       |  16 +++--
 4 files changed, 95 insertions(+), 64 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 0124368..3184308 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,7 +28,7 @@ compiler:
 env:
     - CONFIG_OPTS="" DESTDIR="_install"
     - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2"
-    - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -std=c89 -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes"
+    - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" CPPFLAGS="-ansi"
 
 matrix:
     include:
diff --git a/Configurations/90-team.norelease.conf b/Configurations/90-team.norelease.conf
index a9ab98d..45f1811 100644
--- a/Configurations/90-team.norelease.conf
+++ b/Configurations/90-team.norelease.conf
@@ -18,7 +18,8 @@ my %targets = (
     "debug-erbridge" => {
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "gcc",
-        cflags           => combine("$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g",
+        cflags           => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}),
+                                    "-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g",
                                     threads("-D_REENTRANT")),
         ex_libs          => add(" ","-ldl"),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
@@ -82,7 +83,8 @@ my %targets = (
     "debug-test-64-clang" => {
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "clang",
-        cflags           => combine("$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        cflags           => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}),
+                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
                                     threads("${BSDthreads}")),
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
         thread_scheme    => "pthreads",
@@ -95,7 +97,9 @@ my %targets = (
     "darwin64-debug-test-64-clang" => {
         inherit_from     => [ 'BASE_unix', "x86_64_asm" ],
         cc               => "clang",
-        cflags           => combine("-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
+        cflags           => combine("-arch x86_64 -DL_ENDIAN",
+                                    join(' ', @{$gcc_devteam_warn{CFLAGS}}),
+                                    "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe",
                                     threads("${BSDthreads}")),
         sys_id           => "MACOSX",
         bn_ops           => "SIXTY_FOUR_BIT_LONG",
diff --git a/Configure b/Configure
index 65aa110..6ef6415 100755
--- a/Configure
+++ b/Configure
@@ -119,22 +119,27 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
 # code, so we just tell compiler to be pedantic about everything
 # but 'long long' type.
 
-my $gcc_devteam_warn = "-DDEBUG_UNUSED"
-        . " -DPEDANTIC -pedantic -Wno-long-long"
-        . " -Wall"
-        . " -Wextra"
-        . " -Wno-unused-parameter"
-        . " -Wno-missing-field-initializers"
-        . " -Wswitch"
-        . " -Wsign-compare"
-        . " -Wmissing-prototypes"
-        . " -Wstrict-prototypes"
-        . " -Wshadow"
-        . " -Wformat"
-        . " -Wtype-limits"
-        . " -Wundef"
-        . " -Werror"
-        ;
+my %gcc_devteam_warn = ();
+{
+    my @common = qw( -DDEBUG_UNUSED
+                     -DPEDANTIC -pedantic -Wno-long-long
+                     -Wall
+                     -Wextra
+                     -Wno-unused-parameter
+                     -Wno-missing-field-initializers
+                     -Wswitch
+                     -Wsign-compare
+                     -Wshadow
+                     -Wformat
+                     -Wtype-limits
+                     -Wundef
+                     -Werror );
+    %gcc_devteam_warn = (
+        CFLAGS          => [ @common, qw( -Wmissing-prototypes
+                                          -Wstrict-prototypes ) ],
+        CXXFLAGS        => [ @common ]
+    );
+}
 
 # These are used in addition to $gcc_devteam_warn when the compiler is clang.
 # TODO(openssl-team): fix problems and investigate if (at least) the
@@ -144,16 +149,20 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED"
 #       -Wlanguage-extension-token -- no, we use asm()
 #       -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc
 #       -Wextended-offsetof -- no, needed in CMS ASN1 code
-my $clang_devteam_warn = ""
-        . " -Wswitch-default"
-        . " -Wno-parentheses-equality"
-        . " -Wno-language-extension-token"
-        . " -Wno-extended-offsetof"
-        . " -Wconditional-uninitialized"
-        . " -Wincompatible-pointer-types-discards-qualifiers"
-        . " -Wmissing-variable-declarations"
-        . " -Wno-unknown-warning-option"
-        ;
+my %clang_devteam_warn = ();
+{
+    my @common = qw( -Wswitch-default
+                     -Wno-parentheses-equality
+                     -Wno-language-extension-token
+                     -Wno-extended-offsetof
+                     -Wconditional-uninitialized
+                     -Wincompatible-pointer-types-discards-qualifiers
+                     -Wno-unknown-warning-option );
+    %clang_devteam_warn = (
+        CFLAGS          => [ @common, qw( -Wmissing-variable-declarations ) ],
+        CXXFLAGS        => [ @common ]
+    );
+}
 
 # This adds backtrace information to the memory leak info.  Is only used
 # when crypto-mdebug-backtrace is enabled.
@@ -541,18 +550,18 @@ my %user = (
     AS          => undef,
     ASFLAGS     => [],
     CC          => env('CC'),
-    CFLAGS      => [],
+    CFLAGS      => [ env('CFLAGS') || () ],
     CXX         => env('CXX'),
-    CXXFLAGS    => [],
+    CXXFLAGS    => [ env('CXXFLAGS') || () ],
     CPP         => undef,
-    CPPFLAGS    => [],  # -D, -I, -Wp,
+    CPPFLAGS    => [ env('CPPFLAGS') || () ],  # -D, -I, -Wp,
     CPPDEFINES  => [],  # Alternative for -D
     CPPINCLUDES => [],  # Alternative for -I
     CROSS_COMPILE => env('CROSS_COMPILE'),
     HASHBANGPERL=> env('HASHBANGPERL') || env('PERL'),
     LD          => undef,
-    LDFLAGS     => [],  # -L, -Wl,
-    LDLIBS      => [],  # -l
+    LDFLAGS     => [ env('LDFLAGS') || () ],  # -L, -Wl,
+    LDLIBS      => [ env('LDLIBS') || () ],  # -l
     MT          => undef,
     MTFLAGS     => [],
     PERL        => env('PERL') || ($^O ne "VMS" ? $^X : "perl"),
@@ -747,7 +756,11 @@ while (@argvcopy)
 		}
 	elsif (/^--strict-warnings$/)
 		{
-		$strict_warnings = 1;
+		# Pretend that our strict flags is a C flag, and replace it
+		# with the proper flags later on
+		push @{$useradd{CFLAGS}}, '--ossl-strict-warnings';
+		push @{$useradd{CXXFLAGS}}, '--ossl-strict-warnings';
+		$strict_warnings=1;
 		}
 	elsif (/^--debug$/)
 		{
@@ -1426,7 +1439,10 @@ unless ($disabled{asm}) {
     }
 }
 
-my %predefined = compiler_predefined($config{CROSS_COMPILE}.$config{CC});
+my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC});
+my %predefined_CXX = $config{CXX}
+    ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX})
+    : ();
 
 # Check for makedepend capabilities.
 if (!$disabled{makedepend}) {
@@ -1434,8 +1450,8 @@ if (!$disabled{makedepend}) {
         # For VC- and vms- targets, there's nothing more to do here.  The
         # functionality is hard coded in the corresponding build files for
         # cl (Windows) and CC/DECC (VMS).
-    } elsif (($predefined{__GNUC__} // -1) >= 3
-	     && !($predefined{__APPLE_CC__} && !$predefined{__clang__})) {
+    } elsif (($predefined_C{__GNUC__} // -1) >= 3
+	     && !($predefined_C{__APPLE_CC__} && !$predefined_C{__clang__})) {
         # We know that GNU C version 3 and up as well as all clang
         # versions support dependency generation, but Xcode did not
         # handle $cc -M before clang support (but claims __GNUC__ = 3)
@@ -1448,9 +1464,9 @@ if (!$disabled{makedepend}) {
     }
 }
 
-if (!$disabled{asm} && !$predefined{__MACH__} && $^O ne 'VMS') {
+if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') {
     # probe for -Wa,--noexecstack option...
-    if ($predefined{__clang__}) {
+    if ($predefined_C{__clang__}) {
         # clang has builtin assembler, which doesn't recognize --help,
         # but it apparently recognizes the option in question on all
         # supported platforms even when it's meaningless. In other words
@@ -1510,33 +1526,36 @@ if (defined($config{api})) {
     push @{$config{defines}}, $apiflag;
 }
 
+my %strict_warnings_collection=( CFLAGS => [], CXXFLAGS => []);
 if ($strict_warnings)
 	{
 	my $wopt;
-	my $gccver = $predefined{__GNUC__} // -1;
+	my $gccver = $predefined_C{__GNUC__} // -1;
+	my $gxxver = $predefined_CXX{__GNUC__} // -1;
 
-	die "ERROR --strict-warnings requires gcc[>=4] or gcc-alike"
+	warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike"
             unless $gccver >= 4;
-	foreach $wopt (split /\s+/, $gcc_devteam_warn)
-		{
-		push @{$config{cflags}}, $wopt
-			unless grep { $_ eq $wopt } @{$config{cflags}};
-		push @{$config{cxxflags}}, $wopt
-			if ($config{CXX}
-			    && !grep { $_ eq $wopt } @{$config{cxxflags}});
-		}
-	if (defined($predefined{__clang__}))
+	warn "WARNING --strict-warnings requires g++[>=4] or g++-alike"
+            unless $gxxver >= 4;
+	foreach (qw(CFLAGS CXXFLAGS))
 		{
-		foreach $wopt (split /\s+/, $clang_devteam_warn)
-			{
-			push @{$config{cflags}}, $wopt
-				unless grep { $_ eq $wopt } @{$config{cflags}};
-			push @{$config{cxxflags}}, $wopt
-				if ($config{CXX}
-				    && !grep { $_ eq $wopt } @{$config{cxxflags}});
-			}
+		push @{$strict_warnings_collection{$_}},
+			@{$gcc_devteam_warn{$_}};
 		}
+	push @{$strict_warnings_collection{CFLAGS}},
+		@{$clang_devteam_warn{CFLAGS}}
+			if (defined($predefined_C{__clang__}));
+	push @{$strict_warnings_collection{CXXFLAGS}},
+		@{$clang_devteam_warn{CXXFLAGS}}
+			if (defined($predefined_CXX{__clang__}));
 	}
+foreach my $idx (qw(CFLAGS CXXFLAGS))
+        {
+        $useradd{$idx} = [ map { $_ eq '--ossl-strict-warnings'
+                                     ? @{$strict_warnings_collection{$idx}}
+                                     : ( $_ ) }
+                               @{$useradd{$idx}} ];
+        }
 
 unless ($disabled{"crypto-mdebug-backtrace"})
 	{
diff --git a/test/build.info b/test/build.info
index 52d4ee7..22a7d19 100644
--- a/test/build.info
+++ b/test/build.info
@@ -579,11 +579,19 @@ ENDIF
        next if grep { lc("$name.h") =~ m/$_/i } @nogo_headers_re;
        $OUT .= <<"_____";
 
-  PROGRAMS_NO_INST=buildtest_$name
+  PROGRAMS_NO_INST=buildtest_c_$name
+  SOURCE[buildtest_c_$name]=buildtest_$name.c
   GENERATE[buildtest_$name.c]=generate_buildtest.pl $name
-  SOURCE[buildtest_$name]=buildtest_$name.c
-  INCLUDE[buildtest_$name]=../include
-  DEPEND[buildtest_$name]=../libssl ../libcrypto
+  INCLUDE[buildtest_c_$name]=../include
+  DEPEND[buildtest_c_$name]=../libssl ../libcrypto
+_____
+       $OUT .= <<"_____" if $config{CXX};
+
+  PROGRAMS_NO_INST=buildtest_cc_$name
+  SOURCE[buildtest_cc_$name]=buildtest_$name.cc
+  GENERATE[buildtest_$name.cc]=generate_buildtest.pl $name
+  INCLUDE[buildtest_cc_$name]=../include
+  DEPEND[buildtest_cc_$name]=../libssl ../libcrypto
 _____
    }
 -}


More information about the openssl-commits mailing list