Hi Everyone,
I'm working on Solaris 11.3 i86pc. I'm building the Nettle 3.5.1 release tarball.
configure: summary of build options:
Version: nettle 3.5.1 Host type: x86_64-sun-solaris2 ABI: 64 Assembly files: x86_64/fat x86_64 Install prefix: /usr/local Library directory: /usr/local/lib Compiler: gcc Static libraries: yes Shared libraries: yes Public key crypto: yes Using mini-gmp: no Documentation: no
Running make results in:
gcc -I. -I/usr/local/include -DNDEBUG -DHAVE_CONFIG_H -g2 -O2 -m64 -march=native -fPIC -pthread -ggdb3 -Wno-pointer-sign -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fPIC -MT sha256-compress-2.o -MD -MP -MF sha256-compress-2.o.d -c sha256-compress-2.s sha1-compress-2.s: Assembler messages: sha1-compress-2.s:74: Error: no such instruction: `sha1rnds4 $0,%xmm5,%xmm4' sha1-compress-2.s:79: Error: no such instruction: `sha1nexte %xmm1,%xmm6' sha1-compress-2.s:81: Error: no such instruction: `sha1rnds4 $0,%xmm6,%xmm4' sha1-compress-2.s:82: Error: no such instruction: `sha1msg1 %xmm1,%xmm0' sha1-compress-2.s:87: Error: no such instruction: `sha1nexte %xmm2,%xmm5' ...
Sun provides an old GCC. The compiler supports AES-NI, but it lacks SHA.
$ gcc --version gcc (GCC) 4.8.2
Jeff
Jeffrey Walton noloader@gmail.com writes:
I'm working on Solaris 11.3 i86pc. I'm building the Nettle 3.5.1 release tarball.
configure: summary of build options:
Version: nettle 3.5.1 Host type: x86_64-sun-solaris2 ABI: 64 Assembly files: x86_64/fat x86_64 Install prefix: /usr/local Library directory: /usr/local/lib Compiler: gcc Static libraries: yes Shared libraries: yes Public key crypto: yes Using mini-gmp: no Documentation: no
Running make results in:
gcc -I. -I/usr/local/include -DNDEBUG -DHAVE_CONFIG_H -g2 -O2 -m64 -march=native -fPIC -pthread -ggdb3 -Wno-pointer-sign -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fPIC -MT sha256-compress-2.o -MD -MP -MF sha256-compress-2.o.d -c sha256-compress-2.s sha1-compress-2.s: Assembler messages: sha1-compress-2.s:74: Error: no such instruction: `sha1rnds4 $0,%xmm5,%xmm4' sha1-compress-2.s:79: Error: no such instruction: `sha1nexte %xmm1,%xmm6' sha1-compress-2.s:81: Error: no such instruction: `sha1rnds4 $0,%xmm6,%xmm4' sha1-compress-2.s:82: Error: no such instruction: `sha1msg1 %xmm1,%xmm0' sha1-compress-2.s:87: Error: no such instruction: `sha1nexte %xmm2,%xmm5' ...
Sun provides an old GCC. The compiler supports AES-NI, but it lacks SHA.
$ gcc --version gcc (GCC) 4.8.2
Note that the error messages are from the assembler, not gcc. You're using Solaris' assembler, or GNU binutils?
The best option is to upgrade to an assembler supporting these instructions. The easy option is to drop --eable-fat from the confgure arguments.
There are other options, e.g., pre-assembling these instructions and replacing them with .byte sequences in the .asm file, or additional configure checks to test assembler features and conditionally disable this code. But I'd prefer to not go that way.
Regards, /Niels
nettle-bugs@lists.lysator.liu.se