[openssl] master update

Richard Levitte levitte at openssl.org
Wed Sep 16 16:09:18 UTC 2020


The branch master has been updated
       via  5d942028845b69d761116bb6dfdbee6e095c0d17 (commit)
       via  fc661b50dfedfed1b067782665e0452ed964c22c (commit)
      from  4343a4187d28d719006642a610afea6e186832bf (commit)


- Log -----------------------------------------------------------------
commit 5d942028845b69d761116bb6dfdbee6e095c0d17
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Sep 15 17:40:38 2020 +0200

    Configurations/unix-Makefile.tmpl: Don't specify headers twice
    
    When building in the source tree, a rebuilt Makefile detected both
    include/openssl/foo.h.in and include/openssl/foo.h, so promptly added
    include/openssl/foo.h twice to the list of headers to parse in 'make
    update'
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    Reviewed-by: Tomas Mraz <tmraz at fedoraproject.org>
    (Merged from https://github.com/openssl/openssl/pull/12882)

commit fc661b50dfedfed1b067782665e0452ed964c22c
Author: Richard Levitte <levitte at openssl.org>
Date:   Tue Sep 15 17:10:44 2020 +0200

    OpenSSL::ParseC: recognise inline function bodies
    
    Function bodies in headers weren't a thing when OpenSSL::ParseC was
    created, at least not as clearly as they are nowadays.  This module
    must evolve to recognise them (and promptly ignore them).
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    Reviewed-by: Tomas Mraz <tmraz at fedoraproject.org>
    (Merged from https://github.com/openssl/openssl/pull/12882)

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

Summary of changes:
 Configurations/unix-Makefile.tmpl | 12 ++++++------
 util/perl/OpenSSL/ParseC.pm       |  9 ++++++---
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 90ec900b6a..7eb4ea76a6 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -1083,8 +1083,8 @@ errors:
            include/openssl/ebcdic.h
            include/openssl/opensslconf.h
            include/openssl/symhacks.h ) );
-   our @cryptoheaders = ();
-   our @sslheaders = ();
+   our %cryptoheaders = ();
+   our %sslheaders = ();
    foreach my $d ( qw( include/openssl include/internal ) ) {
        my @header_patterns =
            map { catfile($config{sourcedir}, $d, $_) } ( '*.h', '*.h.in' );
@@ -1104,20 +1104,20 @@ errors:
            # file to be added must be either in the public header directory
            # or one of the pre-declared internal headers, and must under no
            # circumstances be one of those that must be skipped.
-           push @cryptoheaders, $new_f
+           $cryptoheaders{$new_f} = 1
                if (($d eq 'include/openssl'
                     || ( grep { $_ eq $fn } @cryptoheaders_tmpl ))
                    && !( grep { $_ eq $fn } @cryptoskipheaders ));
            # The logic to add files to @sslheaders is much simpler...
-           push @sslheaders, $new_f if grep { $_ eq $fn } @sslheaders_tmpl;
+           $sslheaders{$new_f} = 1 if grep { $_ eq $fn } @sslheaders_tmpl;
        }
    }
    "";
 -}
 CRYPTOHEADERS={- join(" \\\n" . ' ' x 14,
-                      fill_lines(" ", $COLUMNS - 14, sort @cryptoheaders)) -}
+                      fill_lines(" ", $COLUMNS - 14, sort keys %cryptoheaders)) -}
 SSLHEADERS={- join(" \\\n" . ' ' x 11,
-                   fill_lines(" ", $COLUMNS - 11, sort @sslheaders)) -}
+                   fill_lines(" ", $COLUMNS - 11, sort keys %sslheaders)) -}
 ordinals: build_generated
 	$(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION) --no-warnings \
                 --ordinals $(SRCDIR)/util/libcrypto.num \
diff --git a/util/perl/OpenSSL/ParseC.pm b/util/perl/OpenSSL/ParseC.pm
index c5be9b8c2a..b2ac909dc1 100644
--- a/util/perl/OpenSSL/ParseC.pm
+++ b/util/perl/OpenSSL/ParseC.pm
@@ -601,6 +601,7 @@ my @chandlers = (
       massager => sub { return (); }
     },
     # Function returning function pointer declaration
+    # This sort of declaration may have a body (inline functions, for example)
     { regexp   => qr/(?:(typedef)\s?)?          # Possible typedef      ($1)
                      ((?:\w|\*|\s)*?)           # Return type           ($2)
                      \s?                        # Possible space
@@ -609,14 +610,15 @@ my @chandlers = (
                      (\(.*\))                   # Parameters            ($4)
                      \)>>>
                      <<<(\(.*\))>>>             # F.p. parameters       ($5)
-                     ;
+                     (?:<<<\{.*\}>>>|;)         # Body or semicolon
                     /x,
       massager => sub {
-          return ("", $3, 'F', "", "$2(*$4)$5", all_conds())
+          return ("", $3, 'T', "", "$2(*$4)$5", all_conds())
               if defined $1;
           return ("", $3, 'F', "$2(*)$5", "$2(*$4)$5", all_conds()); }
     },
     # Function pointer declaration, or typedef thereof
+    # This sort of declaration never has a function body
     { regexp   => qr/(?:(typedef)\s?)?          # Possible typedef      ($1)
                      ((?:\w|\*|\s)*?)           # Return type           ($2)
                      <<<\(\*([[:alpha:]_]\w*)\)>>> # T.d. or var name   ($3)
@@ -630,12 +632,13 @@ my @chandlers = (
       },
     },
     # Function declaration, or typedef thereof
+    # This sort of declaration may have a body (inline functions, for example)
     { regexp   => qr/(?:(typedef)\s?)?          # Possible typedef      ($1)
                      ((?:\w|\*|\s)*?)           # Return type           ($2)
                      \s?                        # Possible space
                      ([[:alpha:]_]\w*)          # Function name         ($3)
                      <<<(\(.*\))>>>             # Parameters            ($4)
-                     ;
+                     (?:<<<\{.*\}>>>|;)         # Body or semicolon
                     /x,
       massager => sub {
           return ("", $3, 'T', "", "$2$4", all_conds())


More information about the openssl-commits mailing list