aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2004-08-01 17:03:50 +0000
committerAndy Polyakov <appro@openssl.org>2004-08-01 17:03:50 +0000
commit8aae01e2238e1f1b7b4647395625ce23a635529b (patch)
tree64103c83114493b8caa006ca0cfde0da85df3d1c /crypto
parent00555c2f2fa65701b40402f4bf47fc450bd5523d (diff)
downloadopenssl-8aae01e2238e1f1b7b4647395625ce23a635529b.zip
openssl-8aae01e2238e1f1b7b4647395625ce23a635529b.tar.gz
openssl-8aae01e2238e1f1b7b4647395625ce23a635529b.tar.bz2
Deprecate cpp and gaswin targets. New coff fills in for gaswin, but cpp is
going out...
Diffstat (limited to 'crypto')
-rw-r--r--crypto/perlasm/x86asm.pl17
-rw-r--r--crypto/perlasm/x86unix.pl58
2 files changed, 40 insertions, 35 deletions
diff --git a/crypto/perlasm/x86asm.pl b/crypto/perlasm/x86asm.pl
index f9c7c37..32eacd2 100644
--- a/crypto/perlasm/x86asm.pl
+++ b/crypto/perlasm/x86asm.pl
@@ -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("");
diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl
index 12ff816..8a05073 100644
--- a/crypto/perlasm/x86unix.pl
+++ b/crypto/perlasm/x86unix.pl
@@ -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);