First, an overview...
Solaris 9, gcc 4.1.2, binutils 2.18, gnu make 3.80, fails while
assembling aes-sparcv9.s ... A similar system, with the same version of gcc,
binutils, and gnu make, but running Solaris 8 does _not_ exhibit
this behavior. Both systems are sun4u sparc SUNW,UltraAX-i2.
Looking at the file on both systems, the one generated on Solaris8 is 33267
bytes,
the one generated on Solaris9 is 77926 bytes. Copying over the generated
aes-sparcv9.s from Solaris8 allows the build to complete and pass all tests
on Solaris 9 (so that means the other generated assembly files are ok).
Solaris 9 fails the same way regardless of if compiling for
solaris64-sparcv9-gcc
or solaris-sparcv9-gcc ...
I'm looking for some insight, I'm assuming it is a bug in asm/aes-sparcv9.pl,
but someone more familiar with that perl script might be able to
shed some more light on why Solaris8 works but not Solaris9. I've
not yet actually looked at that perl script. The perl versions on the
systems do appear to be different if that matters, Solaris 8 uses 5.005_03,
whereas Solaris 9 uses 5.8.0)
Configuring/compiling with the no-asm flag also resolves the issue, but
is not optimal.
Some more detailed system info:
# uname -a
SunOS solaris9 5.9 Generic_117171-12 sun4u sparc SUNW,UltraAX-i2
# gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.9
Configured with: ../configure --prefix=/usr/local/gcc-4.1.2-pic --enable-shared
--enable-static --enable-languages=c,c++ --with-gnu-as
--with-as=/usr/local/binutils/bin/as --with-gnu-ld
--with-ld=/usr/local/binutils/bin/ld
Thread model: posix
gcc version 4.1.2
# as --version
GNU assembler (GNU Binutils) 2.18
Copyright 2007 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `sparc-sun-solaris2.9'.
# gmake --version
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
# perl --version
This is perl, v5.8.0 built for sun4-solaris
(Solaris8's says: This is perl, version 5.005_03 built for sun4-solaris)
# ./Configure threads no-shared --prefix=/usr/local/ssl-1.0.0-beta2
solaris-sparcv9-gcc
Compilation error:
/usr/local/bin/perl asm/aes-sparcv9.pl -I.. -I../.. -I../asn1 -I../evp
-I../../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m32
-mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W
-DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM >
aes-sparcv9.s
gcc -I.. -I../.. -I../asn1 -I../evp -I../../include -DOPENSSL_THREADS
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m32 -mcpu=ultrasparc -O3
-fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DOPENSSL_BN_ASM_MONT
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -c -o aes-sparcv9.o
aes-sparcv9.s
aes-sparcv9.s: Assembler messages:
aes-sparcv9.s:338: Error: symbol `AES_Te' is already defined
aes-sparcv9.s:632: Error: symbol `_sparcv9_AES_encrypt' is already defined
aes-sparcv9.s:653: Error: symbol `.Lenc_loop' is already defined
aes-sparcv9.s:1853: Error: symbol `_sparcv9_AES_decrypt' is already defined
aes-sparcv9.s:1874: Error: symbol `.Ldec_loop' is already defined
aes-sparcv9.s:2062: Error: symbol `.Ldec_last' is already defined
aes-sparcv9.s:2177: Error: symbol `AES_decrypt' is already defined
aes-sparcv9.s:2202: Error: symbol `.Lunaligned_dec' is already defined
aes-sparcv9.s:2305: Error: junk at end of line, first unrecognized character is
`,'
aes-sparcv9.s:2326: Error: symbol `.Lunaligned_dec' is already defined
aes-sparcv9.s:2434: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:2463: Error: junk at end of line, first unrecognized character is
`5'
aes-sparcv9.s:2479: Error: junk at end of line, first unrecognized character is
`2'
aes-sparcv9.s:2495: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:2512: Error: junk at end of line, first unrecognized character is
`5'
aes-sparcv9.s:2553: Error: symbol `.Lenc_last' is already defined
aes-sparcv9.s:2602: Error: junk at end of line, first unrecognized character is
`2'
aes-sparcv9.s:2610: Error: junk at end of line, first unrecognized character is
`2'
aes-sparcv9.s:2635: Error: junk at end of line, first unrecognized character is
`4'
aes-sparcv9.s:2668: Error: symbol `AES_encrypt' is already defined
aes-sparcv9.s:2693: Error: symbol `.Lunaligned_enc' is already defined
aes-sparcv9.s:2782: Error: symbol `AES_Td' is already defined
aes-sparcv9.s:3076: Error: symbol `_sparcv9_AES_decrypt' is already defined
aes-sparcv9.s:3097: Error: symbol `.Ldec_loop' is already defined
aes-sparcv9.s:3113: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:3129: Error: junk at end of line, first unrecognized character is
`3'
aes-sparcv9.s:3145: Error: junk at end of line, first unrecognized character is
`6'
aes-sparcv9.s:3154: Error: junk at end of line, first unrecognized character is
`3'
aes-sparcv9.s:3166: Error: junk at end of line, first unrecognized character is
`3'
aes-sparcv9.s:3195: Error: junk at end of line, first unrecognized character is
`6'
aes-sparcv9.s:3211: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:3227: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:3244: Error: junk at end of line, first unrecognized character is
`3'
aes-sparcv9.s:3285: Error: symbol `.Ldec_last' is already defined
aes-sparcv9.s:3334: Error: junk at end of line, first unrecognized character is
`2'
aes-sparcv9.s:3342: Error: junk at end of line, first unrecognized character is
`2'
aes-sparcv9.s:3367: Error: junk at end of line, first unrecognized character is
`1'
aes-sparcv9.s:3400: Error: symbol `AES_decrypt' is already defined
aes-sparcv9.s:3425: Error: symbol `.Lunaligned_dec' is already defined
gmake[2]: *** [aes-sparcv9.o] Error 1