Hi, > i had some problems on Win64 using BIO_do_handshake/BIO_should_retry in a > loop. The compiler optimizer placed a local variable value in the xmm6 > register. > The content of this register was destroyed after calling BIO_do_handshake. I > debugged this and found that the xmm6/xmm7 registers were not restored. > I fixed this with following diff for openssl-1.0.2d / x86_64-mont5.pl > (bn_power5 and bn_from_mont8x): > > 1013a1014,1020 >> ___ >> $code.=<<___ if ($win64); >> movaps -88(%rsi),%xmm6 >> movaps -72(%rsi),%xmm7 >> ___ >> $code.=<<___; >> > 2005a2013,2019 >> ___ >> $code.=<<___ if ($win64); >> movaps -88(%rsi),%xmm6 >> movaps -72(%rsi),%xmm7 >> ___ >> $code.=<<___; >> > > The fix in bn_from_mont8x was not necessary for me but i think the lines are > also missing there.
This resolved itself it the course of fixing other problems. Thanks for report! -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4046 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev