Hi,
I'm trying to build OpenSSL 0.9.5a on Solaris 2.4, using the Sun
WorkShop Compiler v3.0.
After running
./config --prefix=/usr/local --openssldir=/usr/local/openssl
I had to edit the "Makefile" to change two compiler CFLAGS: neither
"-xO5" nor "-xdepend" are known by my compiler, so I changed "-xO5" to
"-xO4" and removed "-xdepend" entirely.
I then ran "make", but it fell over with the following error messages:
[...]
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -c -o asm/sparcv8.o asm/sparcv8.S
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -c bn_recp.c
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -c bn_mont.c
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -c bn_mpi.c
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -c bn_exp2.c
ar r ../../libcrypto.a bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o
bn_mul.o bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o bn_gcd.o
bn_prime.o bn_err.o bn_sqr.o asm/sparcv8.o bn_recp.o bn_mont.o
bn_mpi.o bn_exp2.o
ar: asm/sparcv8.o cannot open
ar: asm/sparcv8.o not found
*** Error code 1
make: Fatal error: Command failed for target `lib'
Current working directory /tmp/openssl-0.9.5a/crypto/bn
*** Error code 1
make: Fatal error: Command failed for target `subdirs'
Current working directory /tmp/openssl-0.9.5a/crypto
*** Error code 1
make: Fatal error: Command failed for target `all'
It appears that the assembler file "crypto/bn/asm/sparcv8.S" is not
compiled, and this is not even picked up until the "ar" command is run.
Typing "man cc" I notice that under the FILES section "file.s" is listed
as an assembler source file and no mention is made of "file.S".
So I tried renaming "crypto/bn/asm/sparcv8.S" to
""crypto/bn/asm/sparcv8.s" and changing the reference to it in
"crypto/bn/Makefile" appropriately. I then ran "make" again and this
time got the following output:
[...]
cc -c -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4
-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W -o asm/sparcv8.o asm/sparcv8.s
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
525: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
530: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
531: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
532: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
533: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
534: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
536: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
537: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
538: error: statement syntax
/export/home/SUNWspro/bin/../SC3.0/bin/fbe: "asm/sparcv8.s", line
540: error: statement syntax
[... (one line like this for virtually eevery line of the file) ...]
cc: cg failed for asm/sparcv8.s
*** Error code 2
make: Fatal error: Command failed for target `asm/sparcv8.o'
Current working directory /tmp/openssl-0.9.5a/crypto/bn
*** Error code 1
make: Fatal error: Command failed for target `subdirs'
Current working directory /tmp/openssl-0.9.5a/crypto
*** Error code 1
make: Fatal error: Command failed for target `all'
It now looks like its at least trying to compile the assembler file, and
now failing at that point instead!
I've tried removing the "-xO4" optimsation flag, but to no avail.
If I start again and configure this time with "no-asm" then everything
builds and tests fine.
Please find attached the output from "make report" (before I changed the
".S" to ".s").
Any help would be greatly appreciated!
Thanks,
Steve Hay
OpenSSL self-test report:
OpenSSL version: 0.9.5a
Last change: Make sure _lrotl and _lrotr are only used with MSVC....
Options: --prefix=/usr/local --openssldir=/usr/local/openssl
OS (uname): SunOS radsun2-4 5.4 Generic_101945-41 sun4m sparc
OS (config): sun4m-sun-solaris2
Target (default): solaris-sparcv8-cc
Target: solaris-sparcv8-cc
Compiler: cc: SC3.0 15 Dec 1993
Failure!
-----------------------------------------------------------------------------
making all in crypto...
making all in crypto/md2...
making all in crypto/md5...
making all in crypto/sha...
making all in crypto/mdc2...
making all in crypto/hmac...
making all in crypto/ripemd...
making all in crypto/des...
making all in crypto/rc2...
making all in crypto/rc4...
making all in crypto/rc5...
making all in crypto/idea...
making all in crypto/bf...
making all in crypto/cast...
making all in crypto/bn...
cc -I.. -I../../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4 -xstrconst -Xa
-DB_ENDIAN -DBN_DIV2W -c -o asm/sparcv8.o asm/sparcv8.S
ar r ../../libcrypto.a bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o
bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o bn_gcd.o bn_prime.o bn_err.o
bn_sqr.o asm/sparcv8.o bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o
ar: asm/sparcv8.o cannot open
ar: asm/sparcv8.o not found
*** Error code 1
make: Fatal error: Command failed for target `lib'
Current working directory /tmp/openssl-0.9.5a/crypto/bn
*** Error code 1
make: Fatal error: Command failed for target `subdirs'
Current working directory /tmp/openssl-0.9.5a/crypto
*** Error code 1
make: Fatal error: Command failed for target `all'
Current working directory /tmp/openssl-0.9.5a
-----------------------------------------------------------------------------
c_rehash: rehashing skipped ('openssl' program not available)
touch rehash.time
testing...
cc -I../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4 -xstrconst -Xa -DB_ENDIAN
-DBN_DIV2W -c bntest.c
cc -o bntest -I../include -DTHREADS -D_REENTRANT -xarch=v8 -xO4 -xstrconst -Xa
-DB_ENDIAN -DBN_DIV2W bntest.o -L. -L.. -L../.. -L../../.. -L.. -lcrypto -lsocket -lnsl
Undefined first referenced
symbol in file
ERR_error_string bntest.o
ERR_print_errors_fp bntest.o
RAND_seed bntest.o
RAND_add ../libcrypto.a(bn_rand.o)
bn_mul_comba4 ../libcrypto.a(bn_mul.o)
bn_mul_comba8 ../libcrypto.a(bn_mul.o)
bn_sqr_comba4 ../libcrypto.a(bn_sqr.o)
bn_sqr_comba8 ../libcrypto.a(bn_sqr.o)
bn_mul_add_words ../libcrypto.a(bn_mul.o)
BIO_puts bntest.o
BIO_ctrl bntest.o
RAND_pseudo_bytes ../libcrypto.a(bn_rand.o)
bn_sub_words ../libcrypto.a(bn_mul.o)
bn_sqr_words ../libcrypto.a(bn_sqr.o)
bn_mul_words ../libcrypto.a(bn_div.o)
BIO_s_file bntest.o
ERR_put_error ../libcrypto.a(bn_add.o)
RAND_bytes ../libcrypto.a(bn_rand.o)
BIO_new bntest.o
bn_add_words ../libcrypto.a(bn_add.o)
BIO_free bntest.o
BIO_write ../libcrypto.a(bn_print.o)
ERR_load_crypto_strings bntest.o
bn_div_words ../libcrypto.a(bn_word.o)
ERR_get_error bntest.o
ld: fatal: Symbol referencing errors. No output written to bntest
*** Error code 1
make: Fatal error: Command failed for target `bntest'
Current working directory /tmp/openssl-0.9.5a/test
*** Error code 1
make: Fatal error: Command failed for target `tests'
Current working directory /tmp/openssl-0.9.5a
-----------------------------------------------------------------------------