2
# Perl script to split libeay32.def into two distinct DEF files for use in
3
# fipdso mode. It works out symbols in each case by running "link" command and
4
# parsing the output to find the list of missing symbols then splitting
5
# libeay32.def based on the result.
8
# Get list of unknown symbols
10
my @deferr = `link @ARGV`;
17
# Add symbols to a hash for easy lookup
21
if (/^.*symbol (\S+)$/)
27
open (IN, "ms/libeay32.def") || die "Can't Open DEF file for spliting";
31
# Parse libeay32.def into two arrays depending on whether the symbol matches
37
if (/^\s*(\S+)\s*(\@\S+)\s*$/)
40
if (exists $nosym{$1})
46
my $imptmp = sprintf " %-39s %s\n",
47
"$1=libosslfips.$1", $2;
48
push @fipsrest, $imptmp;
49
push @fipsdll, "\t$1\n";
52
$preamble .= $_ unless $started;
57
# Hack! Add some additional exports needed for libcryptofips.dll
60
push @fipsdll, "\tOPENSSL_showfatal\n";
61
push @fipsdll, "\tOPENSSL_cpuid_setup\n";
63
# Write out DEF files for each array
65
write_def("ms/libosslfips.def", "LIBOSSLFIPS", $preamble, \@fipsdll);
66
write_def("ms/libeayfips.def", "", $preamble, \@fipsrest);
71
my ($fnam, $defname, $preamble, $rdefs) = @_;
72
open (OUT, ">$fnam") || die "Can't Open DEF file $fnam for Writing\n";
76
$preamble =~ s/LIBEAY32/$defname/g;
77
$preamble =~ s/LIBEAY/$defname/g;