From b94551e823599dee6c47dd8a60c1be416b404592 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Tue, 22 Jul 2008 08:44:31 +0000 Subject: [PATCH] perlasm update: implement dataseg directive. --- crypto/perlasm/x86gas.pl | 5 ++++- crypto/perlasm/x86masm.pl | 7 ++++++- crypto/perlasm/x86nasm.pl | 5 +++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/crypto/perlasm/x86gas.pl b/crypto/perlasm/x86gas.pl index 5347bf80a0..9969d382cf 100644 --- a/crypto/perlasm/x86gas.pl +++ b/crypto/perlasm/x86gas.pl @@ -124,7 +124,7 @@ sub ::function_begin_B push(@out,".globl\t$func\n") if ($global); if ($::coff) - { push(@out,".def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); } + { push(@out,".def\t$func;\t.scl\t".(3-$global).";\t.type\t32;\t.endef\n"); } elsif (($::aout and !$::pic) or $::macosx) { } else @@ -258,4 +258,7 @@ ___ } } +sub ::dataseg +{ push(@out,".data\n"); } + 1; diff --git a/crypto/perlasm/x86masm.pl b/crypto/perlasm/x86masm.pl index 98845fab65..cde38a11a4 100644 --- a/crypto/perlasm/x86masm.pl +++ b/crypto/perlasm/x86masm.pl @@ -8,6 +8,7 @@ $::lbdecor="\$L"; # local label decoration $nmdecor="_"; # external name decoration $initseg=""; +$segment=""; sub ::generic { my ($opcode,@arg)=@_; @@ -84,6 +85,7 @@ ELSE ENDIF ___ push(@out,$tmp); + $segment = ".text\$"; } sub ::function_begin_B @@ -121,7 +123,7 @@ ___ grep {s/\.[3-7]86/$xmmheader/} @out; } - push(@out,".text\$ ENDS\n"); + push(@out,"$segment ENDS\n"); if (grep {/\b${nmdecor}OPENSSL_ia32cap_P\b/i} @out) { my $comm=<<___; @@ -175,4 +177,7 @@ DD $f ___ } +sub ::dataseg +{ push(@out,"$segment\tENDS\n_DATA\tSEGMENT\n"); $segment="_DATA"; } + 1; diff --git a/crypto/perlasm/x86nasm.pl b/crypto/perlasm/x86nasm.pl index dadbfe0c2c..ce2bed9bb2 100644 --- a/crypto/perlasm/x86nasm.pl +++ b/crypto/perlasm/x86nasm.pl @@ -158,4 +158,9 @@ ___ } } +sub ::dataseg +{ if ($mwerks) { push(@out,".section\t.data,4\n"); } + else { push(@out,"section\t.data align=4\n"); } +} + 1;