The limit per SYMBOL_VECTOR isn't the amount of symbols, it's the line length

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Richard Levitte 2016-01-12 01:07:46 +01:00
parent 6bd3e10b64
commit fd40db9ecd

View File

@ -1198,7 +1198,7 @@ sub print_def_file
my $prevsymversion = "", $prevprevsymversion = ""; my $prevsymversion = "", $prevprevsymversion = "";
# For VMS # For VMS
my $prevnum = 0; my $prevnum = 0;
my $symbolcount = 0; my $symvtextcount = 0;
if ($W32) if ($W32)
{ $libname.="32"; } { $libname.="32"; }
@ -1240,6 +1240,7 @@ LIB$libname.OLB /LIBRARY
$libref $libref
SYMBOL_VECTOR=(- SYMBOL_VECTOR=(-
EOF EOF
$symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
} }
(@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols); (@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols);
@ -1303,25 +1304,29 @@ EOF
print OUT " $s2;\n"; print OUT " $s2;\n";
} elsif ($VMS) { } elsif ($VMS) {
while(++$prevnum < $n) { while(++$prevnum < $n) {
if ($symbolcount > 1023) { my $symline="dummy$prevcount=PRIVATE_PROCEDURE -";
if ($symvtextcount + length($symline) + 1 > 1024) {
print OUT ")\nSYMBOL_VECTOR=(-\n"; print OUT ")\nSYMBOL_VECTOR=(-\n";
$symbolcount = 0; $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
} }
print OUT $symbolcount if ($symvtextcount > 16) {
? " ," : " "; $symline = ",".$symline;
print OUT "dummy$prevnum=PRIVATE_PROCEDURE -\n"; }
$symbolcount++; print OUT " $symline\n";
$symvtextcount += length($symline);
} }
(my $s_uc = $s) =~ tr/a-z/A-Z/; (my $s_uc = $s) =~ tr/a-z/A-Z/;
if ($symbolcount > 1023) { my $symline="$s_uc/$s="
print OUT ")\nSYMBOL_VECTOR=(-\n";
$symbolcount = 0;
}
print OUT $symbolcount
? " ," : " ";
print OUT "$s_uc/$s="
, ($v ? "DATA" : "PROCEDURE"), " -\n"; , ($v ? "DATA" : "PROCEDURE"), " -\n";
$symbolcount++; if ($symvtextcount + length($symline) + 1 > 1024) {
print OUT ")\nSYMBOL_VECTOR=(-\n";
$symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
}
if ($symvtextcount > 16) {
$symline = ",".$symline;
}
print OUT " $symline\n";
$symvtextcount += length($symline);
} elsif($v && !$OS2) { } elsif($v && !$OS2) {
printf OUT " %s%-39s @%-8d DATA\n", printf OUT " %s%-39s @%-8d DATA\n",
($W32)?"":"_",$s2,$n; ($W32)?"":"_",$s2,$n;