I did an attempt to compile a threaded program with OpenSSL, and found
that a couple of things were a bit incorrect.  The following is a fix
that works for me.  The two of real importance are the change to
Configure (FreeBSD has threads!) and crypto/pkcs7/Makefile.ssl.  The
change in that Makefile got there so the -lc_r (that includes
gmtime_r, which is called bye some part of libcrypto) would get into
the link of the programs.  It's modelled after the link of openssl in
apps/Makefile.

The other patches was because I grew tired of seeing those big blobs
and getting fooled into thinking something mysteriously got
recompiled when it was just a make call...

Index: Configure
===================================================================
RCS file: /usr/local/CVSRoot/Source/openssl-0.9.5/Configure,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 Configure
--- Configure   1999/10/01 16:15:26     1.1.1.2
+++ Configure   1999/10/03 01:14:47
@@ -214,8 +214,8 @@
 "NetBSD-sparc",        "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall 
-DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:::",
 "NetBSD-m68",  "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall 
-DB_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:::",
 "NetBSD-x86",  "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 
-Wall::(unknown)::BN_LLONG $x86_gcc_des $x86_gcc_opts:",
-"FreeBSD-elf",  "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 
-Wall::(unknown)::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
-"FreeBSD",      "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 
-Wall::(unknown)::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_out_asm",
+"FreeBSD-elf",  "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 
+-Wall::-D_THREAD_SAFE -D_REENTRANT:-lc_r:BN_LLONG $x86_gcc_des 
+$x86_gcc_opts:$x86_elf_asm",
+"FreeBSD",      "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 
+-Wall::-D_THREAD_SAFE -D_REENTRANT:-lc_r:BN_LLONG $x86_gcc_des 
+$x86_gcc_opts:$x86_out_asm",
 "bsdi-gcc",     "gcc:-O3 -ffast-math -DL_ENDIAN -DPERL5 -m486::(unknown)::RSA_LLONG 
$x86_gcc_des $x86_gcc_opts:$x86_bsdi_asm",
 "bsdi-elf-gcc",     "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -m486 
-Wall::(unknown)::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
 "nextstep",    "cc:-O -Wall:<libc.h>:(unknown)::BN_LLONG $x86_gcc_des 
${x86_gcc_opts}:::",
Index: Makefile.org
===================================================================
RCS file: /usr/local/CVSRoot/Source/openssl-0.9.5/Makefile.org,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 Makefile.org
--- Makefile.org        1999/10/01 16:15:26     1.1.1.2
+++ Makefile.org        1999/10/02 20:56:09
@@ -180,7 +180,7 @@
        (cd $$i && echo "making all in $$i..." && \
        $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' 
INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' 
RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' SDIRS='${SDIRS}' 
AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; 
\
        done
-       cd crypto; $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' 
INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' 
RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' SDIRS='${SDIRS}' 
AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' testapps
+       @(cd crypto && echo "making testapps in crypto..."; $(MAKE) CC='${CC}' 
+PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' 
+PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' 
+BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' 
+SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' 
+RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' SDIRS='${SDIRS}' AR='${AR}' 
+PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' testapps)
        -@# cd perl; $(PERL) Makefile.PL; make
 
 sub_all:
Index: crypto/Makefile.ssl
===================================================================
RCS file: /usr/local/CVSRoot/Source/openssl-0.9.5/crypto/Makefile.ssl,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 Makefile.ssl
--- Makefile.ssl        1999/09/23 04:40:23     1.1.1.1
+++ Makefile.ssl        1999/10/02 20:57:59
@@ -58,8 +58,10 @@
        echo "#endif" ) >buildinf.h
 
 testapps:
-       cd des && $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' 
INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' 
CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' 
PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' des
-       cd pkcs7 && $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' 
INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' 
CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' 
PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' testapps
+       @echo "making testapps in crypto/des..."
+       @cd des && $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' 
+INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
+BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
+MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' 
+CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' 
+PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' des
+       @echo "making testapps in crypto/pkcs7..."
+       @cd pkcs7 && $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' 
+INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
+BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
+MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' 
+CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' 
+PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' testapps
 
 subdirs:
        @for i in $(SDIRS) ;\
Index: crypto/pkcs7/Makefile.ssl
===================================================================
RCS file: /usr/local/CVSRoot/Source/openssl-0.9.5/crypto/pkcs7/Makefile.ssl,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 Makefile.ssl
--- Makefile.ssl        1999/09/23 04:40:29     1.1.1.1
+++ Makefile.ssl        1999/10/02 19:20:42
@@ -42,16 +42,16 @@
 testapps: enc dec sign verify
 
 enc: enc.o lib
-       $(CC) $(CFLAGS) -o enc enc.o $(LIB)
+       $(CC) $(CFLAGS) -o enc enc.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
 
 dec: dec.o lib
-       $(CC) $(CFLAGS) -o dec dec.o $(LIB)
+       $(CC) $(CFLAGS) -o dec dec.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
 
 sign: sign.o lib
-       $(CC) $(CFLAGS) -o sign sign.o $(LIB)
+       $(CC) $(CFLAGS) -o sign sign.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
 
 verify: verify.o example.o lib
-       $(CC) $(CFLAGS) -o verify verify.o example.o $(LIB)
+       $(CC) $(CFLAGS) -o verify verify.o example.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
 
 lib:   $(LIBOBJ)
        $(AR) $(LIB) $(LIBOBJ)

-- 
Richard Levitte   \ Spannv�gen 38, II \ [EMAIL PROTECTED]
Redakteur@Stacken  \ S-161 43  BROMMA  \ T: +46-8-26 52 47
                    \      SWEDEN       \ or +46-708-26 53 44
Procurator Odiosus Ex Infernis             -- [EMAIL PROTECTED]

Unsolicited commercial email is subject to an archival fee of $400.
See <http://www.stacken.kth.se/~levitte/mail/> for more info.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to