Add DEPRECATEDIN support.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
This commit is contained in:
Dr. Stephen Henson 2016-01-09 13:40:02 +00:00
parent c3be59a47c
commit 7a556fb6f8

View File

@ -101,7 +101,9 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
# NEXTPROTONEG # NEXTPROTONEG
"NEXTPROTONEG", "NEXTPROTONEG",
# Deprecated functions # Deprecated functions
"DEPRECATED", "DEPRECATEDIN_0_9_8",
"DEPRECATEDIN_1_0_0",
"DEPRECATEDIN_1_1_0",
# SCTP # SCTP
"SCTP", "SCTP",
# SRTP # SRTP
@ -174,8 +176,23 @@ foreach (@ARGV, split(/ /, $options))
$do_ctestall=1 if $_ eq "ctestall"; $do_ctestall=1 if $_ eq "ctestall";
$do_checkexist=1 if $_ eq "exist"; $do_checkexist=1 if $_ eq "exist";
#$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK"; #$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK";
if (/^--api=(\d+)\.(\d+)\.(\d+)$/) {
if (/^(enable|disable|no)-(.*)$/) { 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; my $alg = uc $2;
$alg =~ tr/-/_/; $alg =~ tr/-/_/;
if (exists $disabled_algorithms{$alg}) { if (exists $disabled_algorithms{$alg}) {
@ -439,14 +456,15 @@ sub do_defs
print STDERR "DEBUG: parsing ----------\n" if $debug; print STDERR "DEBUG: parsing ----------\n" if $debug;
while(<IN>) { while(<IN>) {
if($parens > 0) { if($parens > 0) {
#Inside a DECLARE_DEPRECATED #Inside a DEPRECATEDIN
$stored_multiline .= $_; $stored_multiline .= $_;
chomp $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); $parens = count_parens($stored_multiline);
if ($parens == 0) { if ($parens == 0) {
$stored_multiline =~ /^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/; $def .= do_deprecated($stored_multiline,
$def .= "$1(void);"; \@current_platforms,
\@current_algorithms);
} }
next; next;
} }
@ -840,14 +858,16 @@ sub do_defs
&$make_variant("_shadow_$2","_shadow_$2", &$make_variant("_shadow_$2","_shadow_$2",
"EXPORT_VAR_AS_FUNCTION", "EXPORT_VAR_AS_FUNCTION",
"FUNCTION"); "FUNCTION");
} elsif (/^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/) { } elsif (/^\s*DEPRECATEDIN/) {
$parens = count_parens($_); $parens = count_parens($_);
if ($parens == 0) { if ($parens == 0) {
$def .= "$1(void);"; $def .= do_deprecated($_,
\@current_platforms,
\@current_algorithms);
} else { } else {
$stored_multiline = $_; $stored_multiline = $_;
chomp $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; next;
} }
} elsif ($tag{'CONST_STRICT'} != 1) { } elsif ($tag{'CONST_STRICT'} != 1) {
@ -1657,3 +1677,15 @@ sub check_version_lte()
if (($cvbase ne $tvbase) && ($tvletter gt $cvletter)); 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;
}