OpenSolaris

Printable Version Enter a New Search
Bug ID 6330877
Synopsis snv_24 /usr/ccs/bin/as causes pkcs11_softtoken to explode on launch.
State 10-Fix Delivered (Fix available in build)
Category:Subcategory solaris-crypto:algorithms
Keywords ef-iteam | sx-doc
Responsible Engineer Darren Moffat
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_26
Fixed In snv_26
Release Fixed solaris_nevada(snv_26)
Related Bugs 6290635 , 6332924 , 4911870
Submit Date 30-September-2005
Last Update Date 1-November-2005
Description
Flipped a coin -- this could be either compiler/assembler-x86 or solaris-crypto/algorithms.

usr/src/common/bignum/i386/bignum_i386_asm.s contains both SSE2 and regular versions of several functions; usr/src/common/bignum/i386/bignum_i386.c selects which one to use based on the presence or absence of SSE2 support on the host.

In build 24, the WOS delivers a new assembler binary which appears to contain the implementation of:

6290635 x864 compiler fails to mark binaries with instructions used

As a result, the generated bignum_i386_asm.o is tagged with the capability [SSE2 MMX].  With older assemblers, that capability tag was not previously present on the output file (see workaround).

This tag is inherited up the linkage food chain into pkcs11_softtoken.so and pkcs11_softtoken_extra.so causing them to fail to load on systems which lack SSE2 support.

if you bfu and boot these bits on a system without SSE2 support, carnage ensues:

SunOS Release 5.11 Version trigati.East.Sun.COM:onnv-portsel:09/29/2005
32-bit
Copyright 1983-2005  xxxxx , Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
WARNING: consconfig: no screen found
Hostname: whitestar-9.East.Sun.COM
NIS domain name is Ecd.East.Sun.COM
WARNING: Module verification failed for /kernel/crypto/des.
WARNING: des _init: crypto_register_provider() failed (0x50)
WARNING: Module verification failed for /kernel/crypto/blowfish448.
WARNING: blowfish448 _init: crypto_register_provider() failed (0x50)
WARNING: Module verification failed for /kernel/crypto/aes256.
WARNING: aes256 _init: crypto_register_provider()failed (0x50)
checking ufs filesystems
/dev/rdsk/c0d0s7: is logging.
/dev/rdsk/c0d0s3: is logging.

whitestar-9.East.Sun.COM console login: Sep 29 19:40:01
whitestar-9.East.Sun.COM snmpd[100532]: libpkcs11: Cannot load PKCS#11
library /usr/lib/security/pkcs11_softtoken_extra.so.  dlerror: ld.so.1:
snmpd: fatal: /usr/lib/security/pkcs11_softtoken_extra.so: hardware
capability unsupported: 0x1000  [ SSE2 ]. See cryptoadm(1M). Skipping
this plug-in.

clearly this is undesirable.
Work Around
use an older assembler to build ON

% what /tmp/as
/tmp/as:
        RELEASE VERSION SunOS 5.10.1 snv_14  04/25/2005
% what /usr/ccs/bin/as
/usr/ccs/bin/as:
        RELEASE VERSION SunOS 5.11 snv_24  09/23/2005
% /usr/ccs/bin/as -P  -D_KERNEL -D_SYSCALL32  -DC2_AUDIT  -D_ASM
-D__STDC__=0  -I../../intel -I../../common  -P -o /tmp/newas.o -DPSR_MUL
-DHWCAP -DMMX_MANAGE
/export/build/sommerfeld/onnv-portsel_i386_nightly/usr/src/common/bignum/i386/bignum_i386_asm.s
% /tmp/as -P  -D_KERNEL -D_SYSCALL32  -DC2_AUDIT  -D_ASM -D__STDC__=0 
-I../../intel -I../../common  -P -o /tmp/oldas.o -DPSR_MUL -DHWCAP
-DMMX_MANAGE
/export/build/sommerfeld/onnv-portsel_i386_nightly/usr/src/common/bignum/i386/bignum_i386_asm.s
% file /tmp/*as.o
/tmp/newas.o: ELF 32-bit LSB relocatable 80386 Version 1 [SSE2 MMX]
/tmp/oldas.o: ELF 32-bit LSB relocatable 80386 Version 1
Comments
N/A