Use SPARE instead of PRIVATE_PROCEDURE to reserve unused SYMBOL_VECTOR slots
[openssl.git] / util / mkdef.pl
index 31822e167d69cac452cedf8df81c1fa16c0f5bf7..a2fdada1816bd96cdf57b108858bcd958d20ec66 100755 (executable)
@@ -123,6 +123,8 @@ my %disabled_algorithms;
 foreach (@known_algorithms) {
     $disabled_algorithms{$_} = 0;
 }
+# disabled by default
+$disabled_algorithms{"STATIC_ENGINE"} = 1;
 
 my $options="";
 open(IN,"<Makefile") || die "unable to open Makefile!\n";
@@ -1196,7 +1198,7 @@ sub print_def_file
        my $prevsymversion = "", $prevprevsymversion = "";
         # For VMS
         my $prevnum = 0;
-        my $symbolcount = 0;
+        my $symvtextcount = 0;
 
        if ($W32)
                { $libname.="32"; }
@@ -1232,11 +1234,13 @@ EOF
                 {
                 my $libref = $name eq "ssl" ? "LIBCRYPTO.EXE /SHARE" : "";
                 print OUT <<"EOF";
-IDENTIFICATION="LIB$libname V$version"
+IDENTIFICATION="V$version"
+CASE_SENSITIVE=YES
 LIB$libname.OLB /LIBRARY
 $libref
 SYMBOL_VECTOR=(-
 EOF
+                $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
                 }
 
        (@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols);
@@ -1300,25 +1304,29 @@ EOF
                                                print OUT "        $s2;\n";
                                         } elsif ($VMS) {
                                             while(++$prevnum < $n) {
-                                                if ($symbolcount > 1023) {
+                                                my $symline="SPARE -";
+                                                if ($symvtextcount + length($symline) + 1 > 1024) {
                                                     print OUT ")\nSYMBOL_VECTOR=(-\n";
-                                                    $symbolcount = 0;
+                                                    $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
                                                 }
-                                                print OUT $symbolcount
-                                                    ? "    ," : "    ";
-                                                print OUT "dummy$prevnum=PRIVATE_PROCEDURE -\n";
-                                                $symbolcount++;
+                                                if ($symvtextcount > 16) {
+                                                    $symline = ",".$symline;
+                                                }
+                                                print OUT "    $symline\n";
+                                                $symvtextcount += length($symline);
                                             }
                                             (my $s_uc = $s) =~ tr/a-z/A-Z/;
-                                            if ($symbolcount > 1023) {
+                                            my $symline="$s_uc/$s="
+                                                , ($v ? "DATA" : "PROCEDURE"), " -\n";
+                                            if ($symvtextcount + length($symline) + 1 > 1024) {
                                                 print OUT ")\nSYMBOL_VECTOR=(-\n";
-                                                $symbolcount = 0;
+                                                $symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
                                             }
-                                            print OUT $symbolcount
-                                                ? "    ," : "    ";
-                                            print OUT "$s_uc/$s="
-                                                , ($v ? "DATA" : "PROCEDURE"), " -\n";
-                                            $symbolcount++;
+                                            if ($symvtextcount > 16) {
+                                                $symline = ",".$symline;
+                                            }
+                                            print OUT "    $symline\n";
+                                            $symvtextcount += length($symline);
                                        } elsif($v && !$OS2) {
                                                printf OUT "    %s%-39s @%-8d DATA\n",
                                                                ($W32)?"":"_",$s2,$n;