Try this patch.
On Sat, 7 Apr 2001, Justin Clift wrote:
> Hi all,
>
> Just letting you know Solaris 8 SPARC (sun4m 32 bit) isn't able to
> compile openssl 0.9.6a beta3 when used with the 'shared' option.
>
> Using gcc 2.95.3, Sun's ld, as, ar etc.
>
> Configured for solaris-sparcv8-gcc, using './config
> --prefix=/opt/openssl threads shared'
>
> It compiles fine when not using 'shared' however.
>
> The output of make just before the error is :
>
> gcc -o rsa_test -I../include -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN
> -DHAVE_DLFCN_H -mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIA
> N -DBN_DIV2W rsa_test.o -L.. -lcrypto -lsocket -lnsl -ldl
> make[1]: Leaving directory `/archive/install/openssl-0.9.6a-beta3/test'
> making all in tools...
> make[1]: Entering directory
> `/archive/install/openssl-0.9.6a-beta3/tools'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/archive/install/openssl-0.9.6a-beta3/tools'
> make[1]: Entering directory `/archive/install/openssl-0.9.6a-beta3'
> make[2]: Entering directory `/archive/install/openssl-0.9.6a-beta3'
> + rm -f libcrypto.so.0
> + rm -f libcrypto.so
> + rm -f libcrypto.so.0.9.6
> libs='-L. '; for i in crypto; do \
> ( set -x; gcc -shared -o lib$i.so.0.9.6 \
> -Wl,-S,-soname=lib$i.so.0.9.6 \
> -Wl,--whole-archive lib$i.a \
> -Wl,--no-whole-archive $libs -lsocket -lnsl -ldl -lc ) || exit
> 1; \
> libs="$libs -l$i"; \
> done
> + gcc -shared -o libcrypto.so.0.9.6 -Wl,-S,-soname=libcrypto.so.0.9.6
> -Wl,--whole-archive libcrypto.a -Wl,--no-whole-archive -L. -
> lsocket -lnsl -ldl -lc
> /usr/ccs/bin/ld: illegal option -- -
> /usr/ccs/bin/ld: illegal option -- w
> /usr/ccs/bin/ld: illegal option -- -
> /usr/ccs/bin/ld: illegal option -- n
> ld: warning: option -o appears more than once, first setting taken
> usage: ld [-6:abc:d:e:f:h:il:mo:p:rstu:z:B:D:F:GI:L:M:N:P:Q:R:S:VY:?]
> file(s)
> [-64] enforce a 64-bit link-edit
> [-a] create an absolute file
> [-b] do not do special PIC relocations in a.out
> [-c file] record configuration `file'
> [-d y|n] operate in dynamic|static mode
> [-e sym] use `sym' as entry point address
> [-f name] specify library for which this file is an
> auxiliary
> filter
> [-h name] use `name' as internal shared object identifier
> [-i] ignore LD_LIBRARY_PATH setting
> [-l x] search for libx.so or libx.a
> [-m] print memory map
> [-o outfile] name the output file `outfile'
> [-p name] identify audit object to accompany this object
> [-r] create a relocatable object
> [-s] strip any symbol and debugging information
> [-t] do not warn of multiply-defined symbols that
> have
> different sizes or alignments
> [-u sym] create an undefined symbol `sym'
> [-z absexec] when building an executable absolute symbols
> referenced in dynamic objects are promoted to
> the executable
> [-z now] mark object as requiring non-lazy binding
> [-z defs|nodefs]
> disallow|allow undefined symbols
> [-z endfiltee] marks a filtee such that it will terminate a
> filters
> search
> [-z groupperm|nogroupperm]
> enable|disable setting of group permissions
> on dynamic dependencies
> [-z ignore|record]
> ignore|record unused dynamic dependencies
> [-z initfirst] mark object to indicate that its .init section
> should
> be executed before the .init section of any
> other
> objects
> [-z loadfltr] mark filter as requiring immediate loading of
> its
> filtees at runtime
> [-z interpose] dynamic object is to be an `interposer' on
> direct bindings
> [-z lazyload|nolazyload]
> enable|disable delayed loading of shared objects
> [-z muldefs] allow multiply-defined symbols
> [-z nodefaultlib]
> mark object to ignore any default library search
> path
> [-z nodelete] mark object as non-deletable
> [-z nodlopen] mark object as non-dlopen()'able
> [-z nodump] mark object as non-dldump()'able
> [-z nopartial] expand any partially initialized symbols
> [-z noversion] don't record any version sections
> [-z origin] mark object as requiring $ORIGIN processing
> [-z redlocsym] reduce local syms in .symtab to a minimum
> [-z text] disallow output relocations against text
> [-z textwarn] warn if there are relocations against text
> [-z textoff] allow output relocations against text
> [-z verbose] generate warnings for suspicious processings
> [-z weakextract]
> allow extraction of archive members to resolve
> weak
> references
> [-z allextract] extract all member files from archive files
> [-z defaultextract]
> extract member files from archive files
> which resolve undefined or tentative symbols
> [-z combreloc] combine multiple relocation sections
> [-B dynamic|static]
> search for shared libraries|archives
> [-B group] relocate object from within group
> [-B eliminate] eliminate unqualified global
> symbols from the symbol table
> [-B local] reduce unqualified global symbols to local
> [-B reduce] process symbol reductions
> [-B symbolic] bind external references to definitions when
> creating
> shared objects
> [-B direct] specify `direct' bindings for executable when
> run
> [-D options] print diagnostic messages
> [-F name] specify library for which this file is a filter
> [-G] create a shared object
> [-I interp] use `interp' as path name of interpreter
> [-L path] search for libraries in directory `path'
> [-M mapfile] use processing directives contained in `mapfile'
> [-N file] create a dynamic dependency on `file'
> [-P name] identify audit object for processing the
> dependencies
> of this object
> [-Q y|n] do|do not place version information in output
> file
> [-R path] specify a library search path to be used at run
> time
> [-S name] specify a link-edit support library
> [-V] print version information
> [-Y P,dirlist] use `dirlist' as a default path when searching
> for
> libraries
> collect2: ld returned 1 exit status
> make[2]: *** [do_gnu-shared] Error 1
> make[2]: Leaving directory `/archive/install/openssl-0.9.6a-beta3'
> make[1]: *** [libcrypto.so.0.9.6] Error 2
> make[1]: Leaving directory `/archive/install/openssl-0.9.6a-beta3'
> make: *** [sub_all] Error 2
> bash-2.03$
>
>
> Regards and best wishes,
>
> Justin Clift
>
>
--
Tim Rice Multitalents (707) 887-1469
[EMAIL PROTECTED]
--- Configure.old Thu Apr 5 13:07:55 2001
+++ Configure Sat Apr 7 11:31:06 2001
@@ -132,18 +132,18 @@
# surrounds it with #APP #NO_APP comment pair which (at least Solaris
# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
# error message.
-"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -Wall -DL_ENDIAN
-DNO_INLINE_ASM::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des}
${x86_gcc_opts}:${x86_sol_asm}:dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -Wall -DL_ENDIAN
+-DNO_INLINE_ASM::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des}
+${x86_gcc_opts}:${x86_sol_asm}:dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
#### SPARC Solaris with GNU C setups
-"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN
-DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
BF_PTR::::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
-DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
BF_PTR:asm/sparcv8.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv9-gcc","gcc:-mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
-DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK
DES_UNROLL
BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN
+-DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
+BF_PTR::::::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
+-DBN_DIV2W::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
+BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
+"solaris-sparcv9-gcc","gcc:-mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
+-DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK
+DES_UNROLL
+BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
# gcc pre-2.8 doesn't understand -mcpu=ultrasparc, so fall down to -mv8
# but keep the assembler modules.
-"solaris-sparcv9-gcc27","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
-DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK
DES_UNROLL
BF_PTR:asm/sparcv8plus-gcc27.o:::asm/md5-sparcv8plus-gcc27.o::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"solaris-sparcv9-gcc27","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN
+-DBN_DIV2W -DULTRASPARC::-D_REENTRANT:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK
+DES_UNROLL
+BF_PTR:asm/sparcv8plus-gcc27.o:::asm/md5-sparcv8plus-gcc27.o::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
####
-"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG
-DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl
-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
BF_PTR:asm/sparcv8.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG
-DCRYPTO_MDEBUG_ALL -O -g -mcpu=ultrasparc -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket
-lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
BF_PTR:asm/sparcv8plus.o:::::::::dlfcn:gnu-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG
+-DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket -lnsl
+-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
+BF_PTR:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
+"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG
+-DCRYPTO_MDEBUG_ALL -O -g -mcpu=ultrasparc -Wall -DB_ENDIAN::-D_REENTRANT:-lsocket
+-lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL
+BF_PTR:asm/sparcv8plus.o:::::::::dlfcn:solaris-shared:-fPIC:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
#### SPARC Solaris with Sun C setups
# DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests