NetWare fixes provided by Verdon Walker for OpenSSL 0.9.8-dev.

The changes have been mailed to <crypt@bis.doc.gov> as well.

PR: 903
This commit is contained in:
Richard Levitte 2004-06-28 11:55:28 +00:00
parent 7d3932e8cf
commit 47c1735acd
7 changed files with 59 additions and 38 deletions

View File

@ -529,6 +529,7 @@ my %table=(
"netware-clib", "mwccnlm:::::${x86_gcc_opts}:::", "netware-clib", "mwccnlm:::::${x86_gcc_opts}:::",
# netware-libc => LibC/NKS support # netware-libc => LibC/NKS support
"netware-libc", "mwccnlm:::::BN_LLONG ${x86_gcc_opts}:::", "netware-libc", "mwccnlm:::::BN_LLONG ${x86_gcc_opts}:::",
"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall::::${x86_gcc_opts}:::",
# DJGPP # DJGPP
"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::", "DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::",

View File

@ -99,9 +99,9 @@ following tools may be required:
NLM and NetWare libraries for C (including CLIB and XPlat): NLM and NetWare libraries for C (including CLIB and XPlat):
If you are going to build a CLIB version of OpenSSL, you will If you are going to build a CLIB version of OpenSSL, you will
need the CLIB headers and imports. The March, 2001 NDK release or need the CLIB headers and imports. The March, 2001 NDK release or
later is recommended. later is recommended.
Earlier versions should work but haven't been tested. In recent Earlier versions should work but haven't been tested. In recent
versions the import files have been consolidated and function versions the import files have been consolidated and function
@ -115,9 +115,9 @@ following tools may be required:
LIBC - BUILDS: LIBC - BUILDS:
Libraries for C (LibC) - LibC headers and import files Libraries for C (LibC) - LibC headers and import files
If you are going to build a LibC version of OpenSSL, you will If you are going to build a LibC version of OpenSSL, you will
need the LibC headers and imports. The March 14, 2002 NDK release or need the LibC headers and imports. The March 14, 2002 NDK release or
later is required. later is required.
NOTE: The LibC SDK includes the necessary WinSock2 support. It NOTE: The LibC SDK includes the necessary WinSock2 support. It
It is not necessary to download the WinSock2 Developer when building It is not necessary to download the WinSock2 Developer when building
@ -133,8 +133,8 @@ The set_env.bat file is a template you can use to set up the path
and environment variables you will need to build. Modify the and environment variables you will need to build. Modify the
various lines to point to YOUR tools and run set_env.bat. various lines to point to YOUR tools and run set_env.bat.
netware\set_env.bat [target] netware\set_env.bat [target]
target - "netware-clib" - CLib NetWare build target - "netware-clib" - CLib NetWare build
- "netware-libc" - LibC NetWare build - "netware-libc" - LibC NetWare build
@ -145,23 +145,21 @@ environment variables:
MWCIncludes - The location of the NDK include files. MWCIncludes - The location of the NDK include files.
CLIB ex: set MWCIncludes=c:\ndk\nwsdk\include\nlm CLIB ex: set MWCIncludes=c:\ndk\nwsdk\include\nlm
LibC ex: set MWCIncludes=c:\ndk\libc\include LibC ex: set MWCIncludes=c:\ndk\libc\include
PRELUDE - The absolute path of the prelude object to link with. For PRELUDE - The absolute path of the prelude object to link with. For
a CLIB build it is recommended you use the "nwpre.obj" file shipped a CLIB build it is recommended you use the "clibpre.o" files shipped
with the Metrowerks PDK for NetWare. For a LibC build you should with the Metrowerks PDK for NetWare. For a LibC build you should
use the "libcpre.o" file delivered with the LibC NDK components. use the "libcpre.o" file delivered with the LibC NDK components.
CLIB ex: set PRELUDE=c:\codewar\novell support\metrowerks support\ CLIB ex: set PRELUDE=c:\ndk\nwsdk\imports\clibpre.o
libraries\runtime\nwpre.obj LibC ex: set PRELUDE=c:\ndk\libc\imports\libcpre.o
LibC ex: set PRELUDE=c:\ndk\libc\imports\libcpre.o
IMPORTS - The locaton of the NDK import files. IMPORTS - The locaton of the NDK import files.
CLIB ex: set IMPORTS=c:\ndk\nwsdk\imports CLIB ex: set IMPORTS=c:\ndk\nwsdk\imports
LibC ex: set IMPORTS=c:\ndk\libc\imports LibC ex: set IMPORTS=c:\ndk\libc\imports
In order to build, you need to run the Perl scripts to configure the build In order to build, you need to run the Perl scripts to configure the build
@ -173,7 +171,7 @@ If an assembly option is specified, it also runs the scripts to generate
the assembly code. Always run build.bat from the "openssl" directory. the assembly code. Always run build.bat from the "openssl" directory.
netware\build [target] [debug opts] [assembly opts] [configure opts] netware\build [target] [debug opts] [assembly opts] [configure opts]
target - "netware-clib" - CLib NetWare build target - "netware-clib" - CLib NetWare build
- "netware-libc" - LibC NetWare build - "netware-libc" - LibC NetWare build
@ -184,16 +182,16 @@ the assembly code. Always run build.bat from the "openssl" directory.
"no-asm" - don't use assembly "no-asm" - don't use assembly
configure opts- all unrecognized arguments are passed to the configure opts- all unrecognized arguments are passed to the
perl configure script perl configure script
examples: examples:
CLIB build, debug, without assembly: CLIB build, debug, without assembly:
netware\build.bat netware-clib debug no-asm netware\build.bat netware-clib debug no-asm
LibC build, non-debug, using NASM assembly: LibC build, non-debug, using NASM assembly:
netware\build.bat netware-libc nw-nasm netware\build.bat netware-libc nw-nasm
Running build.bat generates a make file to be processed by your make Running build.bat generates a make file to be processed by your make
tool (gmake or nmake): tool (gmake or nmake):
@ -207,7 +205,7 @@ subdirectory (in the order listed below):
perl configure no-asm [other config opts] [netware-clib|netware-libc] perl configure no-asm [other config opts] [netware-clib|netware-libc]
configures no assembly build for specified netware environment configures no assembly build for specified netware environment
(CLIB or LibC). (CLIB or LibC).
perl util\mkfiles.pl >MINFO perl util\mkfiles.pl >MINFO
generates a listing of source files (used by mk1mf) generates a listing of source files (used by mk1mf)
@ -434,4 +432,5 @@ functions are actually delivered in the binaries, but they were left out of
the import files. The issues should be fixed in the September 2001 release the import files. The issues should be fixed in the September 2001 release
of the NDK. If you experience the problems you can temporarily of the NDK. If you experience the problems you can temporarily
work around it by manually adding the missing symbols to your version of work around it by manually adding the missing symbols to your version of
"clib.imp". "clib.imp".

View File

@ -60,10 +60,10 @@ if "%LIBC_BUILD%" == "Y" set IMPORTS=%TOOLS%\ndk\libc\imports
if "%CLIB_BUILD%" == "Y" set IMPORTS=%TOOLS%\ndk\nwsdk\imports if "%CLIB_BUILD%" == "Y" set IMPORTS=%TOOLS%\ndk\nwsdk\imports
rem Set PRELUDE to the absolute path of the prelude object to link with in rem Set PRELUDE to the absolute path of the prelude object to link with in
rem the Metrowerks NetWare PDK - NOTE: for Clib builds "nwpre.obj" is rem the Metrowerks NetWare PDK - NOTE: for Clib builds "clibpre.o" is
rem recommended, for LibC NKS builds libcpre.o must be used rem recommended, for LibC NKS builds libcpre.o must be used
if "%LIBC_BUILD%" == "Y" set PRELUDE=%TOOLS%\ndk\libc\imports\libcpre.o if "%LIBC_BUILD%" == "Y" set PRELUDE=%IMPORTS%\libcpre.o
if "%CLIB_BUILD%" == "Y" set PRELUDE=%TOOLS%\codewar\pdk_21\novell support\metrowerks support\libraries\runtime\nwpre.obj if "%CLIB_BUILD%" == "Y" set PRELUDE=%IMPORTS%\clibpre.o
if "%LIBC_BUILD%" == "Y" echo Enviroment configured for LibC build if "%LIBC_BUILD%" == "Y" echo Enviroment configured for LibC build

View File

@ -690,6 +690,16 @@ re_start:
} else i=select(width,(void *)&readfds,(void *)&writefds, } else i=select(width,(void *)&readfds,(void *)&writefds,
NULL,NULL); NULL,NULL);
} }
#elif defined(OPENSSL_SYS_NETWARE)
if(!write_tty) {
if(read_tty) {
tv.tv_sec = 1;
tv.tv_usec = 0;
i=select(width,(void *)&readfds,(void *)&writefds,
NULL,&tv);
} else i=select(width,(void *)&readfds,(void *)&writefds,
NULL,NULL);
}
#else #else
i=select(width,(void *)&readfds,(void *)&writefds, i=select(width,(void *)&readfds,(void *)&writefds,
NULL,NULL); NULL,NULL);

View File

@ -1,4 +1,4 @@
/* crypto/rand/rand_win.c */ /* crypto/rand/rand_nw.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -116,7 +116,7 @@
#if defined (OPENSSL_SYS_NETWARE) #if defined (OPENSSL_SYS_NETWARE)
#if defined(NETWARE_LIBC) #if defined(NETWARE_LIBC)
#include <nks\thread.h> #include <nks/thread.h>
#endif #endif
extern long RunningProcess; extern long RunningProcess;
@ -147,18 +147,23 @@ int RAND_poll(void)
for( i=2; i<ENTROPY_NEEDED; i++) for( i=2; i<ENTROPY_NEEDED; i++)
{ {
#ifdef __MWERKS__
asm asm
{ {
rdtsc rdtsc
mov tsc, eax mov tsc, eax
} }
#else
asm volatile("rdtsc":"=A" (tsc));
#endif
RAND_add(&tsc, sizeof(tsc), 1); RAND_add(&tsc, sizeof(tsc), 1);
l = GetSuperHighResolutionTimer(); l = GetSuperHighResolutionTimer();
RAND_add(&l, sizeof(l), 0); RAND_add(&l, sizeof(l), 0);
# if defined(NETWARE_LIBC) # if defined(NETWARE_LIBC)
NXThreadYield(); NXThreadYield();
# else /* NETWARE_CLIB */ # else /* NETWARE_CLIB */
ThreadSwitchWithDelay(); ThreadSwitchWithDelay();
# endif # endif

View File

@ -161,6 +161,7 @@ int main(int argc, char *argv[])
#ifdef OPENSSL_SYS_NETWARE #ifdef OPENSSL_SYS_NETWARE
if (err) printf("ERROR: %d\n", err); if (err) printf("ERROR: %d\n", err);
#endif #endif
EVP_MD_CTX_cleanup(&c);
EXIT(err); EXIT(err);
return(0); return(0);
} }

5
e_os.h
View File

@ -181,6 +181,11 @@ extern "C" {
#define closesocket(s) close(s) #define closesocket(s) close(s)
#define readsocket(s,b,n) read((s),(b),(n)) #define readsocket(s,b,n) read((s),(b),(n))
#define writesocket(s,b,n) write((s),(char *)(b),(n)) #define writesocket(s,b,n) write((s),(char *)(b),(n))
#elif defined(OPENSSL_SYS_NETWARE)
#define get_last_socket_error() WSAGetLastError()
#define clear_socket_error() WSASetLastError(0)
#define readsocket(s,b,n) recv((s),(b),(n),0)
#define writesocket(s,b,n) send((s),(b),(n),0)
#else #else
#define get_last_socket_error() errno #define get_last_socket_error() errno
#define clear_socket_error() errno=0 #define clear_socket_error() errno=0