diff options
author | Andy Polyakov <appro@openssl.org> | 2004-08-29 21:36:37 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2004-08-29 21:36:37 +0000 |
commit | 16760a3089da372d5cf181f127542f0082dc2aa9 (patch) | |
tree | e53453a3de608bc0dc4ec477a8d5494f33e5c80f /crypto/perlasm | |
parent | 2b247cf81fbc320a313f952e2ea39cf63aa21010 (diff) | |
download | openssl-new-16760a3089da372d5cf181f127542f0082dc2aa9.tar.gz |
Proper support for OpenBSD-i386 shared build, including assember modules!
"Proper" means "compiles and passes test." Versioning is broken (I think).
Diffstat (limited to 'crypto/perlasm')
-rw-r--r-- | crypto/perlasm/x86unix.pl | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl index 0fea7c827d..c34cd74b7a 100644 --- a/crypto/perlasm/x86unix.pl +++ b/crypto/perlasm/x86unix.pl @@ -347,7 +347,7 @@ EOF { $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) + elsif ($main'aout and !$main'pic) { } else { $tmp=push(@out,".type\t$func,\@function\n"); } push(@out,".align\t$align\n"); @@ -379,7 +379,7 @@ EOF { 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) + elsif ($main'aout and !$main'pic) { } else { push(@out,".type $func,\@function\n"); } push(@out,".align\t$align\n"); @@ -717,11 +717,13 @@ ___ } elsif ($main'aout) { - $tmp=<<___; # OpenBSD way... -.text -.globl ${under}_GLOBAL_\$I\$$f + local($ctor)="${under}_GLOBAL_\$I\$$f"; + $tmp=".text\n"; + $tmp.=".type $ctor,\@function\n" if ($main'pic); + $tmp.=<<___; # OpenBSD way... +.globl $ctor .align 2 -${under}_GLOBAL_\$I\$$f +$ctor: jmp $under$f ___ } |