Hi,

Probably this "strict aliasing" 64-bit optimization bug for 
"crypto/bn/bn_nist.c"

Mac OSX compiler fail test/ectest: cc [Apple LLVM version 4.2 (clang-425.0.24) 
(based on LLVM 3.2svn)] gcc-mp-4.3 gcc-mp-4.4 gcc-mp-4.5 gcc-mp-4.6 
clang-mp-3.0 clang-mp-3.1 clang-mp-3.2

Mac OSX compiler test/ectest OK: gcc-apple-4.2 gcc-mp-4.7 gcc-mp-4.8 
[gcc-mp-4.8 (MacPorts gcc48 4.8-20130203_0+universal) 4.8.0 20130203 
(experimental)] clang-mp-2.9 clang-mp-3.3 [clang version 3.3 (trunk 173279)]



After patch: 
$ diff -u ../openssl-SNAP-20130212/crypto/bn/bn_nist.c crypto/bn/bn_nist.c
--- ../openssl-SNAP-20130212/crypto/bn/bn_nist.c        2013-01-11 
18:13:43.000000000 +0400
+++ crypto/bn/bn_nist.c 2013-02-12 13:51:12.000000000 +0400
@@ -421,7 +421,7 @@
 
        nist_cp_bn_0(buf.bn, a_d + BN_NIST_192_TOP, top - BN_NIST_192_TOP, 
BN_NIST_192_TOP);
 
-#if defined(NIST_INT64)
+#if defined(NIST_INT64) && (BN_BITS2!=64 || defined(NO_BUG_CLANG_GCC_64BIT))
        {
        NIST_INT64              acc;    /* accumulator */
        unsigned int            *rp=(unsigned int *)r_d;
@@ -701,7 +701,7 @@
 
        nist_cp_bn_0(buf.bn, a_d + BN_NIST_256_TOP, top - BN_NIST_256_TOP, 
BN_NIST_256_TOP);
 
-#if defined(NIST_INT64)
+#if defined(NIST_INT64) && (BN_BITS2!=64 || defined(NO_BUG_CLANG_GCC_64BIT))
        {
        NIST_INT64              acc;    /* accumulator */
        unsigned int            *rp=(unsigned int *)r_d;
@@ -906,7 +906,7 @@
 
        nist_cp_bn_0(buf.bn, a_d + BN_NIST_384_TOP, top - BN_NIST_384_TOP, 
BN_NIST_384_TOP);
 
-#if defined(NIST_INT64)
+#if defined(NIST_INT64) && (BN_BITS2!=64 || defined(NO_BUG_CLANG_GCC_64BIT))
        {
        NIST_INT64              acc;    /* accumulator */
        unsigned int            *rp=(unsigned int *)r_d;


Mac OSX compiler fail test/ectest: gcc-mp-4.3 gcc-mp-4.4 gcc-mp-4.5 gcc-mp-4.6

Mac OSX compiler test/ectest OK: cc [Apple LLVM version 4.2 (clang-425.0.24) 
(based on LLVM 3.2svn)] gcc-apple-4.2 gcc-mp-4.7 gcc-mp-4.8 [gcc-mp-4.8 
(MacPorts gcc48 4.8-20130203_0+universal) 4.8.0 20130203 (experimental)] 
clang-mp-2.9 clang-mp-3.0 clang-mp-3.1 clang-mp-3.2 clang-mp-3.3 [clang version 
3.3 (trunk 173279)]


-- 
Sorry for my bests English.
 
Serguei E. Leontiev w:+7(495)939-2382 USSR,Moscow,Universitetskij 13
Sternberg Astronom. w:+7(495)780-4820 USSR,Moscow,127018,Sushchevskij val 16-5
Institute, MSU      h:+7(495)318-1146 USSR,Moscow,113303,Kakhovka 6-40
                    m:+7(916)686-1081 SMS: <http://www.mts.ru/sms>
           <http://lnfm1.sai.msu.ru/~leo>



12.02.2013, в 13:21, "Serguei E. Leontiev via RT" <r...@openssl.org> написал(а):

> P.S.
> 
> 64-bit test elliptic curves fail for openssl-SNAP-20130212.test-x86_64 with 
> no-asm flag.
> 
> $ ./Configure darwin64-x86_64-cc no-asm
> $ make depend
> $ make
> $ make test
> ...
> test elliptic curves
> ../util/shlib_wrap.sh ./ectest
> Curve defined by Weierstrass equation
>     y^2 = x^3 + a*x + b  (mod 0x17)
>     a = 0x1
>     b = 0x1
> A cyclic subgroup:
> ...
> long/negative scalar tests ... ok
> combined multiplication ..... ok
> 
> testing internal curves: ...........
> EC_GROUP_check() failed with curve secp384r1
> 
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> Development Mailing List                       openssl-dev@openssl.org
> Automated List Manager                           majord...@openssl.org

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to