Module Name:    src
Committed By:   joerg
Date:           Thu May 28 19:13:33 UTC 2015

Modified Files:
        src/crypto/external/bsd/openssl/dist/crypto/aes/asm: aes-x86_64.pl
            aesni-sha1-x86_64.pl
        src/crypto/external/bsd/openssl/dist/crypto/bn/asm: x86_64-gf2m.pl
        src/crypto/external/bsd/openssl/dist/crypto/rc4/asm: rc4-x86_64.pl
        src/crypto/external/bsd/openssl/dist/crypto/sha/asm: sha1-x86_64.pl

Log Message:
When loading a global variable from the GOT, it must be dereferenced to
obtain the actual value. Adjust various tests to extract the correct bits.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.3 -r1.2 \
    src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl
cvs rdiff -u -r1.1.1.2 -r1.2 \
    src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl
cvs rdiff -u -r1.1.1.3 -r1.2 \
    src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl
cvs rdiff -u -r1.1.1.3 -r1.2 \
    src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl
cvs rdiff -u -r1.1.1.6 -r1.2 \
    src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl
diff -u src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl:1.1.1.3 src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl:1.1.1.3	Tue Feb  5 19:04:21 2013
+++ src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-x86_64.pl	Thu May 28 19:13:32 2015
@@ -1679,12 +1679,12 @@ AES_cbc_encrypt:
 	lea	.LAES_Td(%rip),$sbox
 .Lcbc_picked_te:
 
-	mov	OPENSSL_ia32cap_P(%rip),%r10d
+	mov	OPENSSL_ia32cap_P(%rip),%r10
 	cmp	\$$speed_limit,%rdx
 	jb	.Lcbc_slow_prologue
 	test	\$15,%rdx
 	jnz	.Lcbc_slow_prologue
-	bt	\$28,%r10d
+	bt	\$28,(%r10)
 	jc	.Lcbc_slow_prologue
 
 	# allocate aligned stack frame...

Index: src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl
diff -u src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl:1.1.1.2 src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl:1.1.1.2	Tue Feb  5 19:04:20 2013
+++ src/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl	Thu May 28 19:13:32 2015
@@ -89,15 +89,11 @@ $code.=<<___;
 .align	16
 aesni_cbc_sha1_enc:
 	# caller should check for SSSE3 and AES-NI bits
-	mov	OPENSSL_ia32cap_P+0(%rip),%r10d
-	mov	OPENSSL_ia32cap_P+4(%rip),%r11d
+	mov	OPENSSL_ia32cap_P(%rip),%r10
 ___
 $code.=<<___ if ($avx);
-	and	\$`1<<28`,%r11d		# mask AVX bit
-	and	\$`1<<30`,%r10d		# mask "Intel CPU" bit
-	or	%r11d,%r10d
-	cmp	\$`1<<28|1<<30`,%r10d
-	je	aesni_cbc_sha1_enc_avx
+	bt	\$28, 4(%r10)
+	jc	aesni_cbc_sha1_enc_avx
 ___
 $code.=<<___;
 	jmp	aesni_cbc_sha1_enc_ssse3

Index: src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl
diff -u src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl:1.1.1.3 src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl:1.1.1.3	Sat Jan 11 18:11:12 2014
+++ src/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl	Thu May 28 19:13:32 2015
@@ -168,7 +168,7 @@ $code.=<<___;
 .align	16
 bn_GF2m_mul_2x2:
 	mov	OPENSSL_ia32cap_P(%rip),%rax
-	bt	\$33,%rax
+	bt	\$1,4(%rax)
 	jnc	.Lvanilla_mul_2x2
 
 	movq		$a1,%xmm0

Index: src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl
diff -u src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl:1.1.1.3 src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl:1.1.1.3	Tue Feb  5 19:04:55 2013
+++ src/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl	Thu May 28 19:13:33 2015
@@ -158,7 +158,7 @@ $code.=<<___;
 	mov	-4($dat),$YY#b
 	cmpl	\$-1,256($dat)
 	je	.LRC4_CHAR
-	mov	OPENSSL_ia32cap_P(%rip),%r8d
+	mov	OPENSSL_ia32cap_P(%rip),%r8
 	xor	$TX[1],$TX[1]
 	inc	$XX[0]#b
 	sub	$XX[0],$TX[1]
@@ -166,7 +166,7 @@ $code.=<<___;
 	movl	($dat,$XX[0],4),$TX[0]#d
 	test	\$-16,$len
 	jz	.Lloop1
-	bt	\$30,%r8d	# Intel CPU?
+	bt	\$30,(%r8)	# Intel CPU?
 	jc	.Lintel
 	and	\$7,$TX[1]
 	lea	1($XX[0]),$XX[1]
@@ -443,8 +443,8 @@ private_RC4_set_key:
 	xor	%r10,%r10
 	xor	%r11,%r11
 
-	mov	OPENSSL_ia32cap_P(%rip),$idx#d
-	bt	\$20,$idx#d	# RC4_CHAR?
+	mov	OPENSSL_ia32cap_P(%rip),$idx
+	bt	\$20,($idx)	# RC4_CHAR?
 	jc	.Lc1stloop
 	jmp	.Lw1stloop
 

Index: src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl
diff -u src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl:1.1.1.6 src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl:1.1.1.6	Sat Jan 11 18:11:19 2014
+++ src/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl	Thu May 28 19:13:33 2015
@@ -221,17 +221,14 @@ $code.=<<___;
 .type	sha1_block_data_order,\@function,3
 .align	16
 sha1_block_data_order:
-	mov	OPENSSL_ia32cap_P+0(%rip),%r9d
-	mov	OPENSSL_ia32cap_P+4(%rip),%r8d
-	test	\$`1<<9`,%r8d		# check SSSE3 bit
-	jz	.Lialu
+	mov	OPENSSL_ia32cap_P+0(%rip),%r8
+	mov	4(%r8),%r8d
+	bt	\$9,%r8d
+	jnc	.Lialu
 ___
 $code.=<<___ if ($avx);
-	and	\$`1<<28`,%r8d		# mask AVX bit
-	and	\$`1<<30`,%r9d		# mask "Intel CPU" bit
-	or	%r9d,%r8d
-	cmp	\$`1<<28|1<<30`,%r8d
-	je	_avx_shortcut
+	bt	\$28,%r8d
+	jc	_avx_shortcut
 ___
 $code.=<<___;
 	jmp	_ssse3_shortcut

Reply via email to