Deprecate cpp and gaswin targets. New coff fills in for gaswin, but cpp is
authorAndy Polyakov <appro@openssl.org>
Sun, 1 Aug 2004 17:03:50 +0000 (17:03 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 1 Aug 2004 17:03:50 +0000 (17:03 +0000)
going out...

crypto/perlasm/x86asm.pl
crypto/perlasm/x86unix.pl

index f9c7c37..32eacd2 100644 (file)
@@ -18,15 +18,13 @@ sub main'asm_init
        ($type,$fn,$i386)=@_;
        $filename=$fn;
 
-       $elf=$cpp=$sol=$aout=$win32=$gaswin=$netware=0;
+       $elf=$cpp=$coff=$aout=$win32=$netware=0;
        if (    ($type eq "elf"))
                { $elf=1; require "x86unix.pl"; }
        elsif ( ($type eq "a.out"))
                { $aout=1; require "x86unix.pl"; }
-       elsif ( ($type eq "gaswin"))
-               { $gaswin=1; $aout=1; require "x86unix.pl"; }
-       elsif ( ($type eq "sol"))
-               { $sol=1; require "x86unix.pl"; }
+       elsif ( ($type eq "coff" or $type eq "gaswin"))
+               { $coff=1; require "x86unix.pl"; }
        elsif ( ($type eq "cpp"))
                { $cpp=1; require "x86unix.pl"; }
        elsif ( ($type eq "win32"))
@@ -41,10 +39,9 @@ sub main'asm_init
                {
                print STDERR <<"EOF";
 Pick one target type from
-       elf     - linux, FreeBSD etc
-       a.out   - old linux
-       sol     - x86 solaris
-       cpp     - format so x86unix.cpp can be used
+       elf     - Linux, FreeBSD, Solaris x86, etc.
+       a.out   - OpenBSD, DJGPP, etc.
+       coff    - GAS/COFF such as Win32 targets
        win32   - Windows 95/Windows NT
        win32n  - Windows 95/Windows NT NASM format
        nw-nasm - NetWare NASM format
@@ -61,7 +58,7 @@ EOF
 &comment("Don't even think of reading this code");
 &comment("It was automatically generated by $filename");
 &comment("Which is a perl program used to generate the x86 assember for");
-&comment("any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris");
+&comment("any of ELF, a.out, COFF, Win32, ...");
 &comment("eric <eay\@cryptsoft.com>");
 &comment("");
 
index 12ff816..8a05073 100644 (file)
@@ -1,14 +1,14 @@
 #!/usr/local/bin/perl
 
-package x86unix;
+package x86unix;       # GAS actually...
 
 $label="L000";
 $const="";
 $constl=0;
 
 $align=($main'aout)?"4":"16";
-$under=($main'aout)?"_":"";
-$com_start=($main'sol)?"/":"#";
+$under=($main'aout or $main'coff)?"_":"";
+$com_start="#" if ($main'aout or $main'coff);
 
 sub main'asm_init_output { @out=(); }
 sub main'asm_get_output { return(@out); }
@@ -322,8 +322,6 @@ sub main'file
 
        local($tmp)=<<"EOF";
        .file   "$file.s"
-       .version        "01.01"
-gcc2_compiled.:
 EOF
        push(@out,$tmp);
        }
@@ -337,15 +335,17 @@ sub main'function_begin
 
        local($tmp)=<<"EOF";
 .text
-       .align $align
+.align $align
 .globl $func
 EOF
        push(@out,$tmp);
        if ($main'cpp)
-               { $tmp=push(@out,"\tTYPE($func,\@function)\n"); }
-       elsif ($main'gaswin)
-               { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
-       else    { $tmp=push(@out,"\t.type\t$func,\@function\n"); }
+               { $tmp=push(@out,"TYPE($func,\@function)\n"); }
+       elsif ($main'coff)
+               { $tmp=push(@out,".def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
+       elsif ($main'aout)
+               { }
+       else    { $tmp=push(@out,".type\t$func,\@function\n"); }
        push(@out,"$func:\n");
        $tmp=<<"EOF";
        pushl   %ebp
@@ -367,15 +367,17 @@ sub main'function_begin_B
 
        local($tmp)=<<"EOF";
 .text
-       .align $align
+.align $align
 .globl $func
 EOF
        push(@out,$tmp);
        if ($main'cpp)
-               { push(@out,"\tTYPE($func,\@function)\n"); }
-       elsif ($main'gaswin)
-               { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
-       else    { push(@out,"\t.type    $func,\@function\n"); }
+               { push(@out,"TYPE($func,\@function)\n"); }
+       elsif ($main'coff)
+               { $tmp=push(@out,".def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
+       elsif ($main'aout)
+               { }
+       else    { push(@out,".type      $func,\@function\n"); }
        push(@out,"$func:\n");
        $stack=4;
        }
@@ -397,10 +399,10 @@ EOF
        push(@out,$tmp);
 
        if ($main'cpp)
-               { push(@out,"\tSIZE($func,.L_${func}_end-$func)\n"); }
-       elsif ($main'gaswin)
-                { $tmp=push(@out,"\t.align 4\n"); }
-       else    { push(@out,"\t.size\t$func,.L_${func}_end-$func\n"); }
+               { push(@out,"SIZE($func,.L_${func}_end-$func)\n"); }
+       elsif ($main'coff or $main'aout)
+                { $tmp=push(@out,".align $align\n"); }
+       else    { push(@out,".size\t$func,.L_${func}_end-$func\n"); }
        push(@out,".ident       \"$func\"\n");
        $stack=0;
        %label=();
@@ -428,10 +430,10 @@ sub main'function_end_B
 
        push(@out,".L_${func}_end:\n");
        if ($main'cpp)
-               { push(@out,"\tSIZE($func,.L_${func}_end-$func)\n"); }
-        elsif ($main'gaswin)
-                { push(@out,"\t.align 4\n"); }
-       else    { push(@out,"\t.size\t$func,.L_${func}_end-$func\n"); }
+               { push(@out,"SIZE($func,.L_${func}_end-$func)\n"); }
+        elsif ($main'coff or $main'aout)
+                { push(@out,".align $align\n"); }
+       else    { push(@out,".size\t$func,.L_${func}_end-$func\n"); }
        push(@out,".ident       \"$func\"\n");
        $stack=0;
        %label=();
@@ -473,6 +475,7 @@ sub main'swtmp
 
 sub main'comment
        {
+       return if (!defined($com_start);
        if ($main'elf)  # GNU and SVR4 as'es use different comment delimiters,
                {       # so we just skip comments...
                push(@out,"\n");
@@ -571,7 +574,13 @@ sub main'data_word
 
 sub main'align
        {
-       push(@out,".align $_[0]\n");
+       my $val=$_[0],$p2,$i;
+       if ($main'aout) {
+               for ($p2=0;$val!=0;$val>>=1) { $p2++; }
+               $val=$p2-1;
+               $val.=",0x90";
+       }
+       push(@out,".align $val\n");
        }
 
 # debug output functions: puts, putx, printf
@@ -666,7 +675,6 @@ ___
                }
        elsif ($main'pic && ($main'elf || $main'aout))
                {
-               push(@out,"\t.align\t4\n");
                &main'call(&main'label("PIC_me_up"));
                &main'set_label("PIC_me_up");
                &main'blindpop($dst);