aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-02-14 15:36:50 +0000
committerRichard Levitte <levitte@openssl.org>2002-02-14 15:36:50 +0000
commit2ff622cf9dac1493d14b2ec5bee3c058cb6eb4bc (patch)
tree5b6dc967aedd526b15892c7766419ec01c52f31b
parentb92fb90de591bc448c18db29d0abec3878932f9f (diff)
downloadopenssl-2ff622cf9dac1493d14b2ec5bee3c058cb6eb4bc.tar.gz
Add the configuration target VxWorks.
-rwxr-xr-xConfigure3
-rw-r--r--apps/ca.c2
-rw-r--r--apps/s_time.c22
-rw-r--r--apps/speed.c27
-rw-r--r--crypto/bio/bss_bio.c9
-rw-r--r--crypto/bio/bss_log.c2
-rw-r--r--crypto/des/read_pwd.c12
-rw-r--r--crypto/rand/rand_egd.c6
-rw-r--r--crypto/rsa/rsa.h17
-rw-r--r--crypto/tmdiff.c19
-rw-r--r--e_os.h10
11 files changed, 106 insertions, 23 deletions
diff --git a/Configure b/Configure
index 1551bb91b5..adc599c31f 100755
--- a/Configure
+++ b/Configure
@@ -490,6 +490,9 @@ my %table=(
##### Sony NEWS-OS 4.x
"newsos4-gcc","gcc:-O -DB_ENDIAN -DNEWS4::(unknown):-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
+##### VxWorks for various targets
+"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DVXWORKS -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::-r:::::",
+
);
my @WinTargets=qw(VC-NT VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS BC-32
diff --git a/apps/ca.c b/apps/ca.c
index a8bf049079..f342e1f6aa 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -82,7 +82,7 @@
# else
# include <unixlib.h>
# endif
-# else
+# elif !defined(VXWORKS)
# include <sys/file.h>
# endif
#endif
diff --git a/apps/s_time.c b/apps/s_time.c
index d84fe11a3a..2d8e2b24d2 100644
--- a/apps/s_time.c
+++ b/apps/s_time.c
@@ -82,7 +82,7 @@
#include "wintext.h"
#endif
-#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC)) || defined (_DARWIN)
+#if !defined(MSDOS) && !defined(VXWORKS) && (!defined(VMS) || defined(__DECC)) || defined (_DARWIN)
#define TIMES
#endif
@@ -102,7 +102,7 @@
#undef TIMES
#endif
-#ifndef TIMES
+#if !defined(TIMES) && !defined(VXWORKS)
#include <sys/timeb.h>
#endif
@@ -139,6 +139,8 @@
#undef BUFSIZZ
#define BUFSIZZ 1024*10
+#undef min
+#undef max
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define max(a,b) (((a) > (b)) ? (a) : (b))
@@ -368,6 +370,22 @@ static double tm_Time_F(int s)
ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
return((ret == 0.0)?1e-6:ret);
}
+#elif defined(VXWORKS)
+ {
+ static unsigned long tick_start, tick_end;
+
+ if( s == START )
+ {
+ tick_start = tickGet();
+ return 0;
+ }
+ else
+ {
+ tick_end = tickGet();
+ ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
+ return((ret == 0.0)?1e-6:ret);
+ }
+ }
#else /* !times() */
static struct timeb tstart,tend;
long i;
diff --git a/apps/speed.c b/apps/speed.c
index cab1f7e1a0..153d17e3f4 100644
--- a/apps/speed.c
+++ b/apps/speed.c
@@ -84,10 +84,10 @@
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(_DARWIN)
# define USE_TOD
-#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
+#elif !defined(MSDOS) && !defined(VXWORKS) && (!defined(VMS) || defined(__DECC))
# define TIMES
#endif
-#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE) && !defined(__NetBSD__) && !defined(_DARWIN)
+#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE) && !defined(__NetBSD__) && !defined(_DARWIN) && !defined(VXWORKS)
# define TIMEB
#endif
@@ -115,7 +115,7 @@
#include <sys/timeb.h>
#endif
-#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD)
+#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && !defined(VXWORKS)
#error "It seems neither struct tms nor struct timeb is supported in this platform!"
#endif
@@ -224,7 +224,7 @@ static double Time_F(int s, int usertime)
#ifdef USE_TOD
if(usertime)
- {
+ {
static struct rusage tstart,tend;
if (s == START)
@@ -284,7 +284,23 @@ static double Time_F(int s, int usertime)
# if defined(TIMES) && defined(TIMEB)
else
# endif
-# ifdef TIMEB
+# ifdef VXWORKS
+ {
+ static unsigned long tick_start, tick_end;
+
+ if( s == START )
+ {
+ tick_start = tickGet();
+ return 0;
+ }
+ else
+ {
+ tick_end = tickGet();
+ ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
+ return((ret < 0.001)?0.001:ret);
+ }
+ }
+# elif defined(TIMEB)
{
static struct timeb tstart,tend;
long i;
@@ -303,6 +319,7 @@ static double Time_F(int s, int usertime)
}
}
# endif
+
#endif
}
diff --git a/crypto/bio/bss_bio.c b/crypto/bio/bss_bio.c
index 4614ad44dd..9c8f1514bf 100644
--- a/crypto/bio/bss_bio.c
+++ b/crypto/bio/bss_bio.c
@@ -23,8 +23,13 @@
#include <openssl/crypto.h>
#include "openssl/e_os.h"
-#ifndef SSIZE_MAX
+
+/* VxWorks defines SSiZE_MAX with an empty value causing compile errors */
+#if defined(VXWORKS)
+# undef SSIZE_MAX
# define SSIZE_MAX INT_MAX
+#elif !defined(SSIZE_MAX)
+# define SSIZE_MAX _INT_MAX
#endif
static int bio_new(BIO *bio);
@@ -255,7 +260,7 @@ static ssize_t bio_nread(BIO *bio, char **buf, size_t num_)
ssize_t num, available;
if (num_ > SSIZE_MAX)
- num = SSIZE_MAX;
+ num = SSIZE_MAX;
else
num = (ssize_t)num_;
diff --git a/crypto/bio/bss_log.c b/crypto/bio/bss_log.c
index 1edf16a76f..7ba2acad43 100644
--- a/crypto/bio/bss_log.c
+++ b/crypto/bio/bss_log.c
@@ -75,7 +75,7 @@
# include <starlet.h>
#elif defined(__ultrix)
# include <sys/syslog.h>
-#elif !defined(MSDOS) /* Unix */
+#elif !defined(MSDOS) && !defined(VXWORKS) /* Unix */
# include <syslog.h>
#endif
diff --git a/crypto/des/read_pwd.c b/crypto/des/read_pwd.c
index c27ec336e7..e67cf79428 100644
--- a/crypto/des/read_pwd.c
+++ b/crypto/des/read_pwd.c
@@ -56,7 +56,7 @@
* [including the GNU Public Licence.]
*/
-#if !defined(MSDOS) && !defined(VMS) && !defined(WIN32)
+#if !defined(MSDOS) && !defined(VMS) && !defined(WIN32) && !defined(VXWORKS)
#include <openssl/opensslconf.h>
#ifdef OPENSSL_UNISTD
# include OPENSSL_UNISTD
@@ -133,6 +133,12 @@
#define SGTTY
#endif
+#if defined(VXWORKS)
+#undef TERMIOS
+#undef TERMIO
+#undef SGTTY
+#endif
+
#ifdef TERMIOS
#include <termios.h>
#define TTY_STRUCT struct termios
@@ -240,7 +246,7 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
long status;
unsigned short channel = 0;
#else
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(VXWORKS)
TTY_STRUCT tty_orig,tty_new;
#endif
#endif
@@ -268,7 +274,7 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
#ifdef MSDOS
if ((tty=fopen("con","r")) == NULL)
tty=stdin;
-#elif defined(MAC_OS_pre_X)
+#elif defined(MAC_OS_pre_X) || defined(VXWORKS)
tty=stdin;
#else
#ifndef MPE
diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c
index 79b5e6fa57..a6601696ad 100644
--- a/crypto/rand/rand_egd.c
+++ b/crypto/rand/rand_egd.c
@@ -75,7 +75,11 @@ int RAND_egd_bytes(const char *path,int bytes)
#include <sys/types.h>
#include <sys/socket.h>
#ifndef NO_SYS_UN_H
-#include <sys/un.h>
+# ifdef VXWORKS
+# include <streams/un.h>
+# else
+# include <sys/un.h>
+# endif
#else
struct sockaddr_un {
short sun_family; /* AF_UNIX */
diff --git a/crypto/rsa/rsa.h b/crypto/rsa/rsa.h
index 28912b3906..8f391117d8 100644
--- a/crypto/rsa/rsa.h
+++ b/crypto/rsa/rsa.h
@@ -101,9 +101,14 @@ typedef struct rsa_meth_st
* compatibility this functionality is only enabled if the RSA_FLAG_SIGN_VER
* option is set in 'flags'.
*/
- int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len,
+
+/* changed m_len to m_length to avoid a conflict with a #define in
+ vxworks for m_len for the mbuf code. This only shows up in apps
+ that have USE_SOCKETS defined */
+
+ int (*rsa_sign)(int type, unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen, RSA *rsa);
- int (*rsa_verify)(int dtype, unsigned char *m, unsigned int m_len,
+ int (*rsa_verify)(int dtype, unsigned char *m, unsigned int m_length,
unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
} RSA_METHOD;
@@ -226,16 +231,16 @@ RSA *d2i_Netscape_RSA_2(RSA **a, unsigned char **pp, long length, int (*cb)());
/* The following 2 functions sign and verify a X509_SIG ASN1 object
* inside PKCS#1 padded RSA encryption */
-int RSA_sign(int type, unsigned char *m, unsigned int m_len,
+int RSA_sign(int type, unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen, RSA *rsa);
-int RSA_verify(int type, unsigned char *m, unsigned int m_len,
+int RSA_verify(int type, unsigned char *m, unsigned int m_length,
unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
/* The following 2 function sign and verify a ASN1_OCTET_STRING
* object inside PKCS#1 padded RSA encryption */
-int RSA_sign_ASN1_OCTET_STRING(int type, unsigned char *m, unsigned int m_len,
+int RSA_sign_ASN1_OCTET_STRING(int type, unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen, RSA *rsa);
-int RSA_verify_ASN1_OCTET_STRING(int type, unsigned char *m, unsigned int m_len,
+int RSA_verify_ASN1_OCTET_STRING(int type, unsigned char *m, unsigned int m_length,
unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
diff --git a/crypto/tmdiff.c b/crypto/tmdiff.c
index 7773928666..a10251a2ae 100644
--- a/crypto/tmdiff.c
+++ b/crypto/tmdiff.c
@@ -67,9 +67,11 @@
#ifndef MSDOS
# ifndef WIN32
+# ifndef VXWORKS
# if !defined(VMS) || defined(__DECC)
# define TIMES
# endif
+# endif
# endif
#endif
@@ -95,7 +97,7 @@
#include <sys/param.h>
#endif
-#ifndef TIMES
+#if !defined(TIMES) && !defined(VXWORKS)
#include <sys/timeb.h>
#endif
@@ -125,7 +127,11 @@ typedef struct ms_tm
HANDLE thread_id;
FILETIME ms_win32;
# else
+# ifdef VXWORKS
+ unsigned long ticks;
+# else
struct timeb ms_timeb;
+# endif
# endif
#endif
} MS_TM;
@@ -163,7 +169,11 @@ void ms_time_get(char *a)
# ifdef WIN32
GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
# else
+# ifdef VXWORKS
+ tm->ticks = tickGet();
+# else
ftime(&tm->ms_timeb);
+# endif
# endif
#endif
}
@@ -193,10 +203,14 @@ double ms_time_diff(char *ap, char *bp)
ret=((double)(lb-la))/1e7;
}
# else
+# ifdef VXWORKS
+ ret = (double)(b->ticks - a->ticks) / (double)sysClkRateGet();
+# else
ret= (double)(b->ms_timeb.time-a->ms_timeb.time)+
(((double)b->ms_timeb.millitm)-
((double)a->ms_timeb.millitm))/1000.0;
# endif
+# endif
#endif
return((ret < 0.0000001)?0.0000001:ret);
}
@@ -214,6 +228,9 @@ int ms_time_cmp(char *ap, char *bp)
d =(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7;
d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
# else
+# ifdef VXWORKS
+ d = (b->ticks - a->ticks);
+# else
d= (double)(b->ms_timeb.time-a->ms_timeb.time)+
(((double)b->ms_timeb.millitm)-(double)a->ms_timeb.millitm)/1000.0;
# endif
diff --git a/e_os.h b/e_os.h
index ec06afb876..928032f9ed 100644
--- a/e_os.h
+++ b/e_os.h
@@ -82,6 +82,12 @@ extern "C" {
#define DEVRANDOM "/dev/urandom"
#endif
+#if defined(VXWORKS)
+# define NO_SYS_PARAM_H
+# define NO_CHMOD
+# define NO_SYSLOG
+#endif
+
#if defined(__MWERKS__) && defined(macintosh)
# if macintosh==1
# ifndef MAC_OS_GUSI_SOURCE
@@ -348,7 +354,9 @@ extern HINSTANCE _hInstance;
# ifndef NO_SYS_PARAM_H
# include <sys/param.h>
# endif
-# ifndef MPE
+# ifdef VXWORKS
+# include <time.h>
+# elif !defined(MPE)
# include <sys/time.h> /* Needed under linux for FD_XXX */
# endif