projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a57ecb9
)
save registers in the debug output code (return value is overwritten too)
author
Ulf Möller
<ulf@openssl.org>
Tue, 5 Dec 2000 05:10:05 +0000
(
05:10
+0000)
committer
Ulf Möller
<ulf@openssl.org>
Tue, 5 Dec 2000 05:10:05 +0000
(
05:10
+0000)
crypto/perlasm/x86unix.pl
patch
|
blob
|
history
diff --git
a/crypto/perlasm/x86unix.pl
b/crypto/perlasm/x86unix.pl
index 560da0a7083a321fc026470a00dcf30a29f5ef02..51494e2a449c9b9e17f8d23e0290e8004b3560e4 100644
(file)
--- a/
crypto/perlasm/x86unix.pl
+++ b/
crypto/perlasm/x86unix.pl
@@
-464,23
+464,29
@@
sub main'data_word
push(@out,"\t.long $_[0]\n");
}
push(@out,"\t.long $_[0]\n");
}
+# debug output functions: puts, putx, printf
+
sub main'puts
{
sub main'puts
{
+ &pushvars();
&main'push('$Lstring' . ++$constl);
&main'call('puts');
$stack-=4;
&main'add("esp",4);
&main'push('$Lstring' . ++$constl);
&main'call('puts');
$stack-=4;
&main'add("esp",4);
+ &popvars();
$const .= "Lstring$constl:\n\t.string \"@_[0]\"\n";
}
sub main'putx
{
$const .= "Lstring$constl:\n\t.string \"@_[0]\"\n";
}
sub main'putx
{
+ &pushvars();
&main'push($_[0]);
&main'push('$Lstring' . ++$constl);
&main'call('printf');
$stack-=8;
&main'add("esp",8);
&main'push($_[0]);
&main'push('$Lstring' . ++$constl);
&main'call('printf');
$stack-=8;
&main'add("esp",8);
+ &popvars();
$const .= "Lstring$constl:\n\t.string \"\%X\"\n";
}
$const .= "Lstring$constl:\n\t.string \"\%X\"\n";
}
@@
-488,6
+494,7
@@
sub main'putx
sub main'printf
{
$ostack = $stack;
sub main'printf
{
$ostack = $stack;
+ &pushvars();
for ($i = @_ - 1; $i >= 0; $i--)
{
$constl++;
for ($i = @_ - 1; $i >= 0; $i--)
{
$constl++;
@@
-509,6
+516,21
@@
sub main'printf
}
}
&main'call('printf');
}
}
&main'call('printf');
- $stack=$ostack;
+ $stack-=4*@_;
+ &popvars();
&main'add("esp",4*@_);
}
&main'add("esp",4*@_);
}
+
+sub pushvars
+ {
+ &main'push("edx");
+ &main'push("ecx");
+ &main'push("eax");
+ }
+
+sub popvars
+ {
+ &main'pop("eax");
+ &main'pop("ecx");
+ &main'pop("edx");
+ }