I got some reports that some targets have weird dso_schemes.

Therefore, I've added a sanity checker.

Note that it can be combined with almost any other argument (the other
arguments will be completely ignored), with "reconf" as the blatant
exception, since it also has the behavior of ignoring all following
command line arguments.  If --test-sanity and reconf are both used on
the command line, the first one wins.
This commit is contained in:
Richard Levitte 2002-01-27 15:52:37 +00:00
parent 2a81428489
commit d0d046eca2

View File

@ -10,7 +10,7 @@ use strict;
# see INSTALL for instructions. # see INSTALL for instructions.
my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] os/compiler[:flags]\n"; my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [-test-sanity] os/compiler[:flags]\n";
# Options: # Options:
# #
@ -35,6 +35,9 @@ my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-
# --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently # --with-krb5-flavor Declare what flavor of Kerberos 5 is used. Currently
# supported values are "MIT" and "Heimdal". A value is required. # supported values are "MIT" and "Heimdal". A value is required.
# #
# --test-sanity Make a number of sanity checks on the data in this file.
# This is a debugging tool for OpenSSL developers.
#
# no-hw-xxx do not compile support for specific crypto hardware. # no-hw-xxx do not compile support for specific crypto hardware.
# Generic OpenSSL-style methods relating to this support # Generic OpenSSL-style methods relating to this support
# are always compiled but return NULL if the hardware # are always compiled but return NULL if the hardware
@ -534,6 +537,30 @@ my %table=(
my @WinTargets=qw(VC-NT VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS BC-32 my @WinTargets=qw(VC-NT VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS BC-32
BC-16 Mingw32 OS2-EMX); BC-16 Mingw32 OS2-EMX);
my $idx = 0;
my $idx_cc = $idx++;
my $idx_cflags = $idx++;
my $idx_unistd = $idx++;
my $idx_thread_cflag = $idx++;
my $idx_sys_id = $idx++;
my $idx_lflags = $idx++;
my $idx_bn_ops = $idx++;
my $idx_bn_obj = $idx++;
my $idx_des_obj = $idx++;
my $idx_bf_obj = $idx++;
my $idx_md5_obj = $idx++;
my $idx_sha1_obj = $idx++;
my $idx_cast_obj = $idx++;
my $idx_rc4_obj = $idx++;
my $idx_rmd160_obj = $idx++;
my $idx_rc5_obj = $idx++;
my $idx_dso_scheme = $idx++;
my $idx_shared_target = $idx++;
my $idx_shared_cflag = $idx++;
my $idx_shared_ldflag = $idx++;
my $idx_shared_extension = $idx++;
my $idx_ranlib = $idx++;
my $prefix=""; my $prefix="";
my $openssldir=""; my $openssldir="";
my $exe_ext=""; my $exe_ext="";
@ -619,7 +646,11 @@ PROCESS_ARGS:
foreach (@argvcopy) foreach (@argvcopy)
{ {
s /^-no-/no-/; # some people just can't read the instructions s /^-no-/no-/; # some people just can't read the instructions
if (/^no-asm$/) if (/^--test-sanity$/)
{
exit(&test_sanity());
}
elsif (/^no-asm$/)
{ {
$no_asm=1; $no_asm=1;
$flags .= "-DOPENSSL_NO_ASM "; $flags .= "-DOPENSSL_NO_ASM ";
@ -854,12 +885,30 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /^\//;
print "IsWindows=$IsWindows\n"; print "IsWindows=$IsWindows\n";
(my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, my $cc = $fields[$idx_cc];
my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, my $cflags = $fields[$idx_cflags];
my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, my $unistd = $fields[$idx_unistd];
my $shared_ldflag,my $shared_extension,my $ranlib)= my $thread_cflag = $fields[$idx_thread_cflag];
split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); my $sys_id = $fields[$idx_sys_id];
my $lflags = $fields[$idx_lflags];
my $bn_ops = $fields[$idx_bn_ops];
my $bn_obj = $fields[$idx_bn_obj];
my $des_obj = $fields[$idx_des_obj];
my $bf_obj = $fields[$idx_bf_obj];
my $md5_obj = $fields[$idx_md5_obj];
my $sha1_obj = $fields[$idx_sha1_obj];
my $cast_obj = $fields[$idx_cast_obj];
my $rc4_obj = $fields[$idx_rc4_obj];
my $rmd160_obj = $fields[$idx_rmd160_obj];
my $rc5_obj = $fields[$idx_rc5_obj];
my $dso_scheme = $fields[$idx_dso_scheme];
my $shared_target = $fields[$idx_shared_target];
my $shared_cflag = $fields[$idx_shared_cflag];
my $shared_ldflag = $fields[$idx_shared_ldflag];
my $shared_extension = $fields[$idx_shared_extension];
my $ranlib = $fields[$idx_ranlib];
$cflags="$flags$cflags" if ($flags ne ""); $cflags="$flags$cflags" if ($flags ne "");
# Kerberos settings. The flavor must be provided from outside, either through # Kerberos settings. The flavor must be provided from outside, either through
@ -1481,3 +1530,26 @@ sub print_table_entry
\$ranlib = $ranlib \$ranlib = $ranlib
EOF EOF
} }
sub test_sanity
{
my $errorcnt = 0;
print STDERR "=" x 70, "\n";
print STDERR "=== SANITY TESTING!\n";
print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
print STDERR "=" x 70, "\n";
foreach $target (sort keys %table)
{
@fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
if ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/)
{
$errorcnt++;
print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
print STDERR " valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n";
}
}
return $errorcnt;
}