X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=util%2Fmkdef.pl;h=0c38934ba4c5dd0f8666ec547cd928303d58b8ed;hp=c21b46f874d41a78df0d329f113d00509f637a98;hb=7a556fb6f863980f56deff268a46c75a6ccf74e4;hpb=c3be59a47cdb959e9bfc33880dc29b7b66334747 diff --git a/util/mkdef.pl b/util/mkdef.pl index c21b46f874..0c38934ba4 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -101,7 +101,9 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", # NEXTPROTONEG "NEXTPROTONEG", # Deprecated functions - "DEPRECATED", + "DEPRECATEDIN_0_9_8", + "DEPRECATEDIN_1_0_0", + "DEPRECATEDIN_1_1_0", # SCTP "SCTP", # SRTP @@ -174,8 +176,23 @@ foreach (@ARGV, split(/ /, $options)) $do_ctestall=1 if $_ eq "ctestall"; $do_checkexist=1 if $_ eq "exist"; #$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK"; - - if (/^(enable|disable|no)-(.*)$/) { + if (/^--api=(\d+)\.(\d+)\.(\d+)$/) { + my $apiv = sprintf "%x%02x%02x", $1, $2, $3; + foreach (keys %disabled_algorithms) { + if (/^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/) { + my $depv = sprintf "%x%02x%02x", $1, $2, $3; + $disabled_algorithms{$_} = 1 if $apiv ge $depv; + } + } + } + if (/^no-deprecated$/) { + foreach (keys %disabled_algorithms) { + if (/^DEPRECATEDIN_/) { + $disabled_algorithms{$_} = 1; + } + } + } + elsif (/^(enable|disable|no)-(.*)$/) { my $alg = uc $2; $alg =~ tr/-/_/; if (exists $disabled_algorithms{$alg}) { @@ -439,14 +456,15 @@ sub do_defs print STDERR "DEBUG: parsing ----------\n" if $debug; while() { if($parens > 0) { - #Inside a DECLARE_DEPRECATED + #Inside a DEPRECATEDIN $stored_multiline .= $_; chomp $stored_multiline; - print STDERR "DEBUG: Continuing multiline DEPRECATED: $stored_multiline\n" if $debug; + print STDERR "DEBUG: Continuing multiline DEPRECATEDIN: $stored_multiline\n" if $debug; $parens = count_parens($stored_multiline); if ($parens == 0) { - $stored_multiline =~ /^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/; - $def .= "$1(void);"; + $def .= do_deprecated($stored_multiline, + \@current_platforms, + \@current_algorithms); } next; } @@ -840,14 +858,16 @@ sub do_defs &$make_variant("_shadow_$2","_shadow_$2", "EXPORT_VAR_AS_FUNCTION", "FUNCTION"); - } elsif (/^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/) { + } elsif (/^\s*DEPRECATEDIN/) { $parens = count_parens($_); if ($parens == 0) { - $def .= "$1(void);"; + $def .= do_deprecated($_, + \@current_platforms, + \@current_algorithms); } else { $stored_multiline = $_; chomp $stored_multiline; - print STDERR "DEBUG: Found multiline DEPRECATED starting with: $stored_multiline\n" if $debug; + print STDERR "DEBUG: Found multiline DEPRECATEDIN starting with: $stored_multiline\n" if $debug; next; } } elsif ($tag{'CONST_STRICT'} != 1) { @@ -1657,3 +1677,15 @@ sub check_version_lte() if (($cvbase ne $tvbase) && ($tvletter gt $cvletter)); } } + +sub do_deprecated() +{ + my ($decl, $plats, $algs) = @_; + $decl =~ /^\s*(DEPRECATEDIN_\d_\d_\d)\s*\((.*)\)\s*$/; + my $info1 .= "#INFO:"; + $info1 .= join(',', @{$plats}) . ":"; + my $info2 = $info1; + $info1 .= join(',',@{$algs}, $1) . ";"; + $info2 .= join(',',@{$algs}) . ";"; + return $info1 . $2 . ";" . $info2; +}