[openssl-dev] 64 bit compilacion seems to fail with some PERL versions

Omon Edeki (Nowell Development) omon.edeki at nowellgroup.com
Fri Mar 20 00:00:35 UTC 2015


I had success compiling and integrating 1.0.2 on Centos Linux 5.10 i686,
however for Windows 7 64 bit, my 64 bit compilation of 1.0.2 did not succeed
at the first attempt. Instead for our Windows 7 build , I downloaded
openssl-1.0.11 and compiled it as a 32 bit library and integrated with our
project libraries and that succeeded.  I followed these as a guide for
Visual Studio:

http://developer.covenanteyes.com/building-openssl-for-visual-studio/

Not sure if this helps your situation, but it worked for me


Very respectfully,

Omon Edeki
Omon.edeki at nowellgroup.com
https://www.linkedin.com/pub/omon-edeki/8/38b/912
Director, Software Development
Nowell Development
512-903-2950

-----Original Message-----
From: openssl-dev [mailto:openssl-dev-bounces at openssl.org] On Behalf Of
Jesus Cea
Sent: Thursday, March 19, 2015 5:51 PM
To: OpenSSL Developer ML
Subject: [openssl-dev] 64 bit compilacion seems to fail with some PERL
versions

When compiling a 64 bit OpenSSL 1.0.2a with a 32 bit PERL interpreter I get
this error:

"""
./config zlib-dynamic shared
make
[...]
/usr/local/bin/perl asm/ghash-x86_64.pl elf > ghash-x86_64.s Integer
overflow in hexadecimal number at asm/../../perlasm/x86_64-xlate.pl line
201, <> line 890.
gcc -I.. -I../.. -I../modes -I../asn1 -I../evp -I../../include  -fPIC
-DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT
-DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -O3 -Wall -DL_ENDIAN
-DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM
-DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
-DECP_NISTZ256_ASM -c  -o ghash-x86_64.o ghash-x86_64.s
ghash-x86_64.s: Assembler messages:
ghash-x86_64.s:890: Error: junk `.15473355479995e+19' after expression
<builtin>: recipe for target 'ghash-x86_64.o' failed
make[2]: *** [ghash-x86_64.o] Error 1
"""

In line 890 I have this:

"""
        subq    $48,%rcx
        movq    $1.15473355479995e+19,%rax  <<<<<<<<<<<<<<<<<<
        movdqu  48(%rsi),%xmm14
        movdqu  64(%rsi),%xmm15
"""

Comparing that line in other machines where compilation is done correctly, I
see this:

"""
         movq    $11547335547999543296,%rax
"""

Notice that "11547335547999543296" is approximately 1.15473355479995e+19 in
scientific notation.

When doing "perl -e 'print(11547335547999543296)' I get:

11547335547999543296

in one machine (64 bits), but

1.15473355479995e+19

in the other machine (32 bits).

The number is being promoted to scientific notation and compilation will
fail.

Yes, in Solaris I can mix 32 and 64 bit binaries in the same running system.
It is standard practice and the reason I am compiling OpenSSL both in 32 and
in 64 bits.

Replacing the scientific notation value with "11547335547999543296" the code
compiles correctly and the tests complete 100% OK.

In the 64 bit PERL version "11547335547999543296" is printed correctly as an
integer but "21547335547999543296" (first digit changed) is printed as
2.15473355479995e+19. I think that depending of implementation details (the
value when an integer is "promoted" to floating point) of the PERL
interpreter is bad practice and should be avoided. Maybe using literal
string, of splitting the number in two halfs.

-- 
Jesús Cea Avión                         _/_/      _/_/_/        _/_/_/
jcea at jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
Twitter: @jcea                        _/_/    _/_/          _/_/_/_/_/
jabber / xmpp:jcea at jabber.org  _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz




More information about the openssl-dev mailing list