Combat [bogus] relocations in some assember modules.
This commit is contained in:
parent
2f0550c4c1
commit
ad8bd4ece8
@ -2657,12 +2657,10 @@ sub enckey()
|
|||||||
&xor ("eax",&DWP(1024-128,$tbl,"ecx",4)); # rcon
|
&xor ("eax",&DWP(1024-128,$tbl,"ecx",4)); # rcon
|
||||||
}
|
}
|
||||||
|
|
||||||
# int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
|
||||||
# AES_KEY *key)
|
|
||||||
&public_label("AES_Te");
|
&public_label("AES_Te");
|
||||||
&function_begin("AES_set_encrypt_key");
|
&function_begin("_x86_AES_set_encrypt_key");
|
||||||
&mov ("esi",&wparam(0)); # user supplied key
|
&mov ("esi",&wparam(1)); # user supplied key
|
||||||
&mov ("edi",&wparam(2)); # private key schedule
|
&mov ("edi",&wparam(3)); # private key schedule
|
||||||
|
|
||||||
&test ("esi",-1);
|
&test ("esi",-1);
|
||||||
&jz (&label("badpointer"));
|
&jz (&label("badpointer"));
|
||||||
@ -2685,7 +2683,7 @@ sub enckey()
|
|||||||
&mov ("ecx",&DWP(192-128,$tbl));
|
&mov ("ecx",&DWP(192-128,$tbl));
|
||||||
&mov ("edx",&DWP(224-128,$tbl));
|
&mov ("edx",&DWP(224-128,$tbl));
|
||||||
|
|
||||||
&mov ("ecx",&wparam(1)); # number of bits in key
|
&mov ("ecx",&wparam(2)); # number of bits in key
|
||||||
&cmp ("ecx",128);
|
&cmp ("ecx",128);
|
||||||
&je (&label("10rounds"));
|
&je (&label("10rounds"));
|
||||||
&cmp ("ecx",192);
|
&cmp ("ecx",192);
|
||||||
@ -2862,7 +2860,14 @@ sub enckey()
|
|||||||
&set_label("badpointer");
|
&set_label("badpointer");
|
||||||
&mov ("eax",-1);
|
&mov ("eax",-1);
|
||||||
&set_label("exit");
|
&set_label("exit");
|
||||||
&function_end("AES_set_encrypt_key");
|
&function_end("_x86_AES_set_encrypt_key");
|
||||||
|
|
||||||
|
# int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||||
|
# AES_KEY *key)
|
||||||
|
&function_begin_B("AES_set_encrypt_key");
|
||||||
|
&call ("_x86_AES_set_encrypt_key");
|
||||||
|
&ret ();
|
||||||
|
&function_end_B("AES_set_encrypt_key");
|
||||||
|
|
||||||
sub deckey()
|
sub deckey()
|
||||||
{ my ($i,$key,$tp1,$tp2,$tp4,$tp8) = @_;
|
{ my ($i,$key,$tp1,$tp2,$tp4,$tp8) = @_;
|
||||||
@ -2921,18 +2926,8 @@ sub deckey()
|
|||||||
|
|
||||||
# int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
# int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||||
# AES_KEY *key)
|
# AES_KEY *key)
|
||||||
&public_label("AES_Td");
|
|
||||||
&public_label("AES_Te");
|
|
||||||
&function_begin_B("AES_set_decrypt_key");
|
&function_begin_B("AES_set_decrypt_key");
|
||||||
&mov ("eax",&wparam(0));
|
&call ("_x86_AES_set_encrypt_key");
|
||||||
&mov ("ecx",&wparam(1));
|
|
||||||
&mov ("edx",&wparam(2));
|
|
||||||
&sub ("esp",12);
|
|
||||||
&mov (&DWP(0,"esp"),"eax");
|
|
||||||
&mov (&DWP(4,"esp"),"ecx");
|
|
||||||
&mov (&DWP(8,"esp"),"edx");
|
|
||||||
&call ("AES_set_encrypt_key");
|
|
||||||
&add ("esp",12);
|
|
||||||
&cmp ("eax",0);
|
&cmp ("eax",0);
|
||||||
&je (&label("proceed"));
|
&je (&label("proceed"));
|
||||||
&ret ();
|
&ret ();
|
||||||
|
@ -115,12 +115,14 @@ sub ::file
|
|||||||
|
|
||||||
sub ::function_begin_B
|
sub ::function_begin_B
|
||||||
{ my($func,$extra)=@_;
|
{ my($func,$extra)=@_;
|
||||||
my $tmp;
|
my $begin;
|
||||||
|
|
||||||
&::external_label($func);
|
&::external_label($func);
|
||||||
|
$label{$func} = $begin = "${dot}L_${func}_begin";
|
||||||
$func=$under.$func;
|
$func=$under.$func;
|
||||||
|
|
||||||
push(@out,".text\n.globl\t$func\n");
|
push(@out,".text\n");
|
||||||
|
push(@out,".globl\t$func\n") if ($func !~ /^${under}_/);
|
||||||
if ($::coff)
|
if ($::coff)
|
||||||
{ push(@out,".def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
|
{ push(@out,".def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
|
||||||
elsif ($::aout and !$::pic)
|
elsif ($::aout and !$::pic)
|
||||||
@ -129,18 +131,19 @@ sub ::function_begin_B
|
|||||||
{ push(@out,".type $func,\@function\n"); }
|
{ push(@out,".type $func,\@function\n"); }
|
||||||
push(@out,".align\t$align\n");
|
push(@out,".align\t$align\n");
|
||||||
push(@out,"$func:\n");
|
push(@out,"$func:\n");
|
||||||
|
push(@out,"$begin:\n");
|
||||||
$::stack=4;
|
$::stack=4;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ::function_end_B
|
sub ::function_end_B
|
||||||
{ my($func)=@_;
|
{ my($func)=@_;
|
||||||
|
my $i;
|
||||||
|
|
||||||
$func=$under.$func;
|
|
||||||
push(@out,"${dot}L_${func}_end:\n");
|
push(@out,"${dot}L_${func}_end:\n");
|
||||||
if ($::elf)
|
if ($::elf)
|
||||||
{ push(@out,".size\t$func,${dot}L_${func}_end-$func\n"); }
|
{ push(@out,".size\t$under$func,${dot}L_${func}_end-${dot}L_${func}_begin\n"); }
|
||||||
$::stack=0;
|
$::stack=0;
|
||||||
%label=();
|
foreach $i (keys %label) { delete $label{$i} if ($label{$i} =~ /^${dot}L[0-9]{3}/); }
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ::comment
|
sub ::comment
|
||||||
@ -162,8 +165,8 @@ sub ::comment
|
|||||||
|
|
||||||
sub islabel # see is argument is a known label
|
sub islabel # see is argument is a known label
|
||||||
{ my $i;
|
{ my $i;
|
||||||
foreach $i (%label) { return $label{$i} if ($label{$i} eq $_[0]); }
|
foreach $i (values %label) { return $i if ($i eq $_[0]); }
|
||||||
undef;
|
$label{$_[0]}; # can be undef
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ::external_label { push(@labels,@_); }
|
sub ::external_label { push(@labels,@_); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user