X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=util%2Fmkdef.pl;h=409a39019f94a26871b337b3e85a1bc63a3c4bfd;hp=88c45c7d9b932acfe5150692a3f0aed75062ca97;hb=aacfb134be2a88211b79dc53bb5bd0e422dbb60d;hpb=3fa04f0d72c22d45213bec1b26c7d84a5b31ac68 diff --git a/util/mkdef.pl b/util/mkdef.pl index 88c45c7d9b..409a39019f 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -40,11 +40,12 @@ use lib "."; use configdata; +use File::Spec::Functions; my $debug=0; -my $crypto_num= "util/libeay.num"; -my $ssl_num= "util/ssleay.num"; +my $crypto_num= catfile($config{sourcedir},"util","libeay.num"); +my $ssl_num= catfile($config{sourcedir},"util","ssleay.num"); my $libname; my $do_update = 0; @@ -89,8 +90,8 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", "STATIC_ENGINE", "ENGINE", "HW", "GMP", # Entropy Gathering "EGD", - # X.509v3 Signed Certificate Timestamps - "SCT", + # Certificate Transparency + "CT", # RFC3779 "RFC3779", # TLS @@ -101,8 +102,6 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", "CAPIENG", # SSL v3 method "SSL3_METHOD", - # JPAKE - "JPAKE", # NEXTPROTONEG "NEXTPROTONEG", # Deprecated functions @@ -175,7 +174,6 @@ foreach (@ARGV, split(/ /, $config{options})) $do_ctest=1 if $_ eq "ctest"; $do_ctestall=1 if $_ eq "ctestall"; $do_checkexist=1 if $_ eq "exist"; - #$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK"; if (/^--api=(\d+)\.(\d+)\.(\d+)$/) { my $apiv = sprintf "%x%02x%02x", $1, $2, $3; foreach (keys %disabled_algorithms) { @@ -233,12 +231,12 @@ my $ssl="include/openssl/ssl.h"; $ssl.=" include/openssl/tls1.h"; $ssl.=" include/openssl/srtp.h"; +# We use headers found in include/openssl and include/internal only. +# The latter is needed so libssl.so/.dll/.exe can link properly. my $crypto ="include/openssl/crypto.h"; -$crypto.=" crypto/include/internal/cryptlib.h"; -$crypto.=" crypto/include/internal/chacha.h"; # unless $no_chacha; -$crypto.=" crypto/include/internal/poly1305.h"; # unless $no_poly1305; $crypto.=" include/internal/o_dir.h"; $crypto.=" include/internal/o_str.h"; +$crypto.=" include/internal/threads.h"; $crypto.=" include/openssl/des.h" ; # unless $no_des; $crypto.=" include/openssl/idea.h" ; # unless $no_idea; $crypto.=" include/openssl/rc4.h" ; # unless $no_rc4; @@ -292,12 +290,12 @@ $crypto.=" include/openssl/comp.h" ; # unless $no_comp; $crypto.=" include/openssl/ocsp.h"; $crypto.=" include/openssl/ui.h"; #$crypto.=" include/openssl/store.h"; -$crypto.=" include/openssl/pqueue.h"; $crypto.=" include/openssl/cms.h"; -$crypto.=" include/openssl/jpake.h"; $crypto.=" include/openssl/srp.h"; $crypto.=" include/openssl/modes.h"; $crypto.=" include/openssl/async.h"; +$crypto.=" include/openssl/ct.h"; +$crypto.=" include/openssl/kdf.h"; my $symhacks="include/openssl/symhacks.h"; @@ -385,8 +383,9 @@ sub do_defs foreach $file (split(/\s+/,$symhacksfile." ".$files)) { - print STDERR "DEBUG: starting on $file:\n" if $debug; - open(IN,"<$file") || die "unable to open $file:$!\n"; + my $fn = catfile($config{sourcedir},$file); + print STDERR "DEBUG: starting on $fn:\n" if $debug; + open(IN,"<$fn") || die "unable to open $fn:$!\n"; my $line = "", my $def= ""; my %tag = ( (map { $_ => 0 } @known_platforms), @@ -458,7 +457,7 @@ sub do_defs if($parens > 0) { #Inside a DEPRECATEDIN $stored_multiline .= $_; - chomp $stored_multiline; + $stored_multiline =~ s|\R$||; # Better chomp print STDERR "DEBUG: Continuing multiline DEPRECATEDIN: $stored_multiline\n" if $debug; $parens = count_parens($stored_multiline); if ($parens == 0) { @@ -479,9 +478,7 @@ sub do_defs } if (/\\$/) { - chomp; # remove eol - chop; # remove ending backslash - $line = $_; + $line = $`; # keep what was before the backslash next; } @@ -498,8 +495,11 @@ sub do_defs $cpp++ if /^#\s*if/; $cpp-- if /^#\s*endif/; next; - } - $cpp = 1 if /^#.*ifdef.*cplusplus/; + } + if (/^#.*ifdef.*cplusplus/) { + $cpp = 1; + next; + } s/{[^{}]*}//gs; # ignore {} blocks print STDERR "DEBUG: \$def=\"$def\"\n" if $debug && $def ne ""; @@ -586,6 +586,7 @@ sub do_defs pop(@tag); } elsif (/^\#\s*else/) { my $tag_i = $#tag; + die "$file unmatched else\n" if $tag_i < 0; while($tag[$tag_i] ne "-") { my $t=$tag[$tag_i]; $tag{$t}= -$tag{$t}; @@ -604,6 +605,9 @@ sub do_defs push(@tag,"TRUE"); $tag{"TRUE"}=-1; print STDERR "DEBUG: $file: found 0\n" if $debug; + } elsif (/^\#\s*if\s+/) { + #Some other unrecognized "if" style + push(@tag,"-"); } elsif (/^\#\s*define\s+(\w+)\s+(\w+)/ && $symhacking && $tag{'TRUE'} != -1) { # This is for aliasing. When we find an alias, @@ -638,7 +642,8 @@ sub do_defs next; } if ($tag{'TRUE'} != -1) { - if (/^\s*DECLARE_STACK_OF\s*\(\s*(\w*)\s*\)/) { + if (/^\s*DEFINE_STACK_OF\s*\(\s*(\w*)\s*\)/ + || /^\s*DEFINE_STACK_OF_CONST\s*\(\s*(\w*)\s*\)/) { next; } elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) { $def .= "int d2i_$3(void);"; @@ -866,7 +871,7 @@ sub do_defs \@current_algorithms); } else { $stored_multiline = $_; - chomp $stored_multiline; + $stored_multiline =~ s|\R$||; print STDERR "DEBUG: Found multiline DEPRECATEDIN starting with: $stored_multiline\n" if $debug; next; } @@ -880,6 +885,7 @@ sub do_defs } } close(IN); + die "$file: Unmatched tags\n" if $#tag >= 0; my $algs; my $plays; @@ -1029,7 +1035,8 @@ sub reduce_platforms return $ret; } -sub info_string { +sub info_string +{ (my $symbol, my $exist, my $platforms, my $kind, my $algorithms) = @_; my %a = defined($algorithms) ? @@ -1047,13 +1054,13 @@ sub info_string { return $ret; } -sub maybe_add_info { +sub maybe_add_info +{ (my $name, *nums, my @symbols) = @_; my $sym; my $new_info = 0; my %syms=(); - print STDERR "Updating $name info\n"; foreach $sym (@symbols) { (my $s, my $i) = split /\\/, $sym; if (defined($nums{$s})) { @@ -1077,12 +1084,11 @@ sub maybe_add_info { } } if ($new_info) { - print STDERR "$new_info old symbols got an info update\n"; + print STDERR "$name: $new_info old symbols have updated info\n"; if (!$do_rewrite) { print STDERR "You should do a rewrite to fix this.\n"; } } else { - print STDERR "No old symbols needed info update\n"; } } @@ -1172,7 +1178,8 @@ sub print_test_file } } -sub get_version { +sub get_version +{ return $config{version}; } @@ -1223,12 +1230,8 @@ EOF } elsif ($VMS) { - my $libref = $name eq "ssl" ? "LIBCRYPTO.EXE /SHARE" : ""; print OUT <<"EOF"; -IDENTIFICATION="V$version" CASE_SENSITIVE=YES -LIB$libname.OLB /LIBRARY -$libref SYMBOL_VECTOR=(- EOF $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" @@ -1295,34 +1298,35 @@ EOF print OUT " $s2;\n"; } elsif ($VMS) { while(++$prevnum < $n) { - my $symline="SPARE, SPARE -"; - if ($symvtextcount + length($symline) + 1 > 1024) { + my $symline=" ,SPARE -\n ,SPARE -\n"; + if ($symvtextcount + length($symline) - 2 > 1024) { print OUT ")\nSYMBOL_VECTOR=(-\n"; $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" } - if ($symvtextcount > 16) { - $symline = ",".$symline; + if ($symvtextcount == 16) { + # Take away first comma + $symline =~ s/,//; } - print OUT " $symline\n"; - $symvtextcount += length($symline); + print OUT $symline; + $symvtextcount += length($symline) - 2; } (my $s_uc = $s) =~ tr/a-z/A-Z/; my $symtype= $v ? "DATA" : "PROCEDURE"; my $symline= ($s_uc ne $s - ? "$s_uc/$s=$symtype, $s=$symtype" - : "$s=$symtype, SPARE") - ." -"; - if ($symvtextcount + length($symline) + 1 > 1024) { + ? " ,$s_uc/$s=$symtype -\n ,$s=$symtype -\n" + : " ,$s=$symtype -\n ,SPARE -\n"); + if ($symvtextcount + length($symline) - 2 > 1024) { print OUT ")\nSYMBOL_VECTOR=(-\n"; $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-" } - if ($symvtextcount > 16) { - $symline = ",".$symline; + if ($symvtextcount == 16) { + # Take away first comma + $symline =~ s/,//; } - print OUT " $symline\n"; - $symvtextcount += length($symline); + print OUT $symline; + $symvtextcount += length($symline) - 2; } elsif($v && !$OS2) { printf OUT " %s%-39s @%-8d DATA\n", ($W32)?"":"_",$s2,$n; @@ -1366,7 +1370,7 @@ sub load_numbers open(IN,"<$name") || die "unable to open $name:$!\n"; while () { - chop; + s|\R$||; # Better chomp s/#.*$//; next if /^\s*$/; @a=split; @@ -1432,8 +1436,6 @@ sub rewrite_numbers (*OUT,$name,*nums,@symbols)=@_; my $thing; - print STDERR "Rewriting $name\n"; - my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols); my $r; my %r; my %rsyms; foreach $r (@r) { @@ -1482,8 +1484,6 @@ sub update_numbers ($basevers, $vers) = get_openssl_version(); - print STDERR "Updating $name numbers\n"; - my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols); my $r; my %r; my %rsyms; foreach $r (@r) { @@ -1513,9 +1513,9 @@ sub update_numbers } } if($new_syms) { - print STDERR "$new_syms New symbols added\n"; + print STDERR "$name: Added $new_syms new symbols\n"; } else { - print STDERR "No New symbols Added\n"; + print STDERR "$name: No new symbols added\n"; } } @@ -1556,7 +1556,8 @@ sub count_parens #version sub get_openssl_version() { - open (IN, "include/openssl/opensslv.h") || die "Can't open opensslv.h"; + my $fn = catfile($config{sourcedir},"include","openssl","opensslv.h"); + open (IN, "$fn") || die "Can't open opensslv.h"; while() { if (/OPENSSL_VERSION_TEXT\s+"OpenSSL (\d\.\d\.)(\d[a-z]*)(-| )/) {