Tök jó, linuxon sem fordul az OpenSSL-1.0.2d

 ( NevemTeve | 2015. július 23., csütörtök - 8:45 )

Ugye-ugye, itt rinyálok hogy AIX így meg úgy...

ghash-x86_64.s: Assembler messages:
ghash-x86_64.s:890: Error: junk `.15473355479995e+19' after expression

a kérdéses rész:

   889          subq    $48,%rcx
   890          movq    $1.15473355479995e+19,%rax
   891          movdqu  48(%rsi),%xmm14
   892          movdqu  64(%rsi),%xmm15

as --version
GNU assembler (GNU Binutils for Debian) 2.20.1-system.20100303
This assembler was configured for a target of `i486-linux-gnu'.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nopéldául:

http://openssl.6102.n7.nabble.com/openssl-dev-64-bit-compilacion-seems-to-fail-with-some-PERL-versions-td57096.html

vagyis egy perl-script írja meg az Assembly source-t:
crypto/modes/asm/ghash-x86_64.pl (ez Power-processzornál is így van), tehát a scriptet meg a Perl-t kell gyanusítani.

Nagy biztonsággal ez az érintett rész:

   659          sub             \$0x30,$len
   660          mov             \$0xA040608020C0E000,%rax       # ((7..0)ˇ0xE0)&0xff
   661          movdqu          0x30($Htbl),$Hkey3
   662          movdqu          0x40($Htbl),$Hkey4

64 bites környezetben nem kell a bigint, 32 biten meg igen. Ha a környezet, ahol a fordítást csinálod 64 bites, akkor joggal tételezi fel a cucc, hogy az eszközök, amit használsz (a Perl is) 64 bites. Szerintem... Sőt, külön van Perl script 32 meg 64 bites környezetre...

Így lehet tesztelni:

$ perl -e 'print(11547335547999543296)'
1.15473355479995e+19 # na ez a rossz

$ perl -e 'use bigint; print(11547335547999543296)'
11547335547999543296 # ez meg a jó

Azt is elmagyarázod, hogy a "na ez rossz" helyett ugyanazzal a kóddal mit kellene látni? Vagy nem