> I am also having a issue this issue. It is a 32 bit build issue
> only. The 64 bit build completes using the same development
> environment. The offending instruction is "movd". Unfortunately
> I am not a x86 assembler expert.
>
> Mark
>
> perl crypto\sha\asm\sha1-586.pl win32 /MD /Ox /O2 /Ob2
> -DOPENSSL_THREADS
> -DDSO_WIN32 -W3 -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32
> -DWIN32_LEAN_AND_
> MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -DOPENSSL_BN_ASM_PART_WORDS
> -DOPENSSL
> _IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM
> -DSHA256_ASM -
> DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM
> -DGHASH
> _ASM -DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2
> -DOPENSSL_NO_KR
> B5 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_DYNAMIC_ENGINE >tmp32dll\sha1-586.asm
> ml /nologo /Cp /coff /c /Cx /Zi /Fotmp32dll\sha1-586.obj
> tmp32dll\sha1-5
> 86.asm
> Assembling: tmp32dll\sha1-586.asm
> tmp32dll\sha1-586.asm(1432) : error A2070:invalid instruction operands
> tmp32dll\sha1-586.asm(1576) : error A2070:invalid instruction operands
> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio
> 11.0
> \VC\BIN\ml.EXE"' : return code '0x1'
> Stop.
>
> $Lshaext_shortcut::
> mov edi,DWORD PTR 20[esp]
> mov ebx,esp
> mov esi,DWORD PTR 24[esp]
> mov ecx,DWORD PTR 28[esp]
> sub esp,32
> movdqu xmm0,XMMWORD PTR [edi]
> movd xmm1,XMMWORD PTR 16[edi] * 1432
Ah! It should be DWORD, not XMMWORD... Devja vu! There was similar case
with movq elsewhere. See if attached fixes the problem.
diff --git a/crypto/perlasm/x86masm.pl b/crypto/perlasm/x86masm.pl
index 1741342..05a9865 100644
--- a/crypto/perlasm/x86masm.pl
+++ b/crypto/perlasm/x86masm.pl
@@ -18,7 +18,7 @@ sub ::generic
if ($opcode =~ /lea/ && @arg[1] =~ s/.*PTR\s+(\(.*\))$/OFFSET $1/) # no []
{ $opcode="mov"; }
- elsif ($opcode !~ /movq/)
+ elsif ($opcode !~ /mov[dq]/)
{ # fix xmm references
$arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[1]=~/\bxmm[0-7]\b/i);
$arg[1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i);
diff --git a/crypto/sha/asm/sha1-586.pl b/crypto/sha/asm/sha1-586.pl
index 8377299..4895eb3 100644
--- a/crypto/sha/asm/sha1-586.pl
+++ b/crypto/sha/asm/sha1-586.pl
@@ -450,7 +450,7 @@ sub sha1msg2 { sha1op38(0xca,@_); }
&sub ("esp",32);
&movdqu ($ABCD,&QWP(0,$ctx));
- &movd ($E,&QWP(16,$ctx));
+ &movd ($E,&DWP(16,$ctx));
&and ("esp",-32);
&movdqa ($BSWAP,&QWP(0x50,$tmp1)); # byte-n-word swap
_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev