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