From 225f4daf15427481d5a33fb330a46fd69e71bcf7 Mon Sep 17 00:00:00 2001
From: Andy Polyakov <appro@openssl.org>
Date: Sat, 21 May 2005 17:51:12 +0000
Subject: [PATCH] Still SEGV trouble in .init segment under Solaris x86...

---
 crypto/perlasm/x86unix.pl | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl
index 305a55bf62..18d4fbff45 100644
--- a/crypto/perlasm/x86unix.pl
+++ b/crypto/perlasm/x86unix.pl
@@ -537,7 +537,8 @@ sub main'file_end
 	if ($main'elf && grep {/%[x]*mm[0-7]/i} @out) {
 		local($tmp);
 
-		push (@out,"\n.comm\t${under}OPENSSL_ia32cap_P,4,4\n");
+		push (@out,"\n.section\t.bss\n");
+		push (@out,".comm\t${under}OPENSSL_ia32cap_P,4,4\n");
 
 		push (@out,".section\t.init\n");
 		# One can argue that it's wasteful to craft every
@@ -572,6 +573,8 @@ sub main'file_end
 		movl	%edx,0(%edi)
 		popl	%ebx
 		popl	%edi
+		jmp	1f
+	.align	$align
 	1:
 ___
 		push (@out,$tmp);
@@ -716,6 +719,9 @@ sub main'initseg
 		$tmp=<<___;
 .section	.init
 	call	$under$f
+	jmp	1f
+.align	$align
+1:
 ___
 		}
 	elsif ($main'coff)
-- 
2.25.1