diff --git a/Configurations/50-nonstop.conf b/Configurations/50-nonstop.conf new file mode 100644 index 0000000000000000000000000000000000000000..51034c70aab916dacec0e5f07b6695d7583d81e7 --- /dev/null +++ b/Configurations/50-nonstop.conf @@ -0,0 +1,176 @@ +#### Nonstop configurations + "nonstop-common" => { + inherit_from => [ "BASE_unix" ], + template => 1, + cc => "c99", + cflags => add_before(picker(debug => "-g -O0", + release => "-g -O2") ,"-Wextensions -Wnowarn=203,220,272,734,770,1506 -Wbuild_neutral_library"), + perl => "/usr/bin/perl", + lflags => "-lrld", + shared_target => "self", + shared_cflag => "", + shared_ldflag => "-Wshared", + shared_extension => ".so", + enable => ["egd"], + dso_scheme => "DLFCN", + }, + "nonstop-nsx" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -I/usr/local/include") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -I/usr/local/include") }, + lflags => sub { join(" ",@_,"-lfloss -Wxld='-set floattype neutral_float' -Wsystype=oss") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set floattype neutral_float -set systype oss' -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsx_put" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose") }, + shared_cflag => sub { join(" ",@_,"-Wverbose") }, + lflags => sub { join(" ",@_,"-lput") }, + shared_ldflag => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -set systype oss' -lput -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsx_64" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wlp64 -Wverbose") }, + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose") }, + lflags => sub { join(" ",@_,"-lfloss -Wlp64") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set data_model lp64 -set floattype neutral_float -set systype oss' -Wlp64 -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"], + disable => ["threads"], + bn_ops => "SIXTY_FOUR_BIT", + }, + "nonstop-nsx_64_put" => { + inherit_from => [ "nonstop-common" ], + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/x") }, + cflags => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/x") }, + lflags => sub { join(" ",@_,"-Wxld='-set floattype neutral_float -set systype oss' -Wlp64 -lput -Wsystype=oss") }, + shared_ldflag => sub { join(" ",@_,"-Wxld='-export_all -set data_model lp64'") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_TANDEM_ARCH=3","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS","__TANDEM", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "SIXTY_FOUR_BIT", + }, + "nonstop-nsx_spt" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + lflags => sub { join(" ",@_,"-lspt -Wextensions") }, + shared_ldflag => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsx_spt_floss" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-I/usr/local/include -Wverbose -Wtarget=tns/x") }, + shared_cflag => sub { join(" ",@_,"-I/usr/local/include -Wverbose -Wtarget=tns/x") }, + lflags => sub { join(" ",@_,"-lfloss -lspt -Wextensions") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM","OPENSSL_TANDEM_FLOSS"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsx_g" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + lflags => sub { join(" ",@_,"-Wsystype=guardian -Wxld='-set systype guardian -set floattype neutral_float'") }, + shared_ldflag => sub { join(" ",@_,"-Wxld='-export_all -set floattype neutral_float -soname \$\(\@:lib%.so=%\) -set systype guardian' -Wsystype=guardian") }, + #shared_extension => " ", + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsx_g_tandem" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/x") }, + lflags => sub { join(" ",@_,"-Wsystype=guardian -Wxld='-set systype guardian -set floattype tandem_float'") }, + shared_ldflag => sub { join(" ",@_,"-Wxld='-export_all -set floattype tandem_float -soname \$\(\@:lib%.so=%\) -set systype guardian' -Wsystype=guardian") }, + #shared_extension => " ", + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nsv" => { + inherit_from => [ "nonstop-nsx" ], + }, + "nonstop-nse" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include") }, + lflags => sub { join(" ",@_,"-lfloss") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Weld='-export_all -set floattype neutral_float -set systype oss' -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_TANDEM_ARCH=2","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","__TANDEM", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nse_put" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-lput") }, + shared_ldflag => sub { join(" ",@_,"-Weld='-export_all -set floattype neutral_float -set systype oss' -lput -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nse_64" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-lfloss -Wlp64") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Weld='-export_all -set data_model lp64 -set floattype neutral_float -set systype oss' -Wlp64 -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"], + disable => ["threads"], + bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR", + }, + "nonstop-nse_64_put" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-lput -Wlp64") }, + shared_ldflag => sub { join(" ",@_,"-Weld='-export_all -set data_model lp64 -set floattype neutral_float -set systype oss' -Wlp64 -lput -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_PUT_MODEL_","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1","_ENABLE_FLOSS_THREADS", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR", + }, + "nonstop-nse_spt" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-lspt -Wextensions") }, + shared_ldflag => sub { join(" ",@_,"-Weld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nse_spt_floss" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-lfloss -lspt -Wextensions") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Weld='-export_all -set floattype neutral_float -set systype oss' -lspt -Wextensions -Wsystype=oss") }, + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_REENTRANT", "_SPT_MODEL_","_THREAD_SUPPORT_FUNCTIONS","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "OPENSSL_TANDEM_FLOSS"], + bn_ops => "THIRTY_TWO_BIT", + }, + "nonstop-nse_g" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian'") }, + shared_ldflag => sub { join(" ",@_,"-Weld='-set systype guardian -export_all -set floattype neutral_float -soname \$\(\@:lib%.so=%\)' -Wsystype=guardian") }, + #shared_extension => " ", + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, + + "nonstop-nse_g_tandem" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e") }, + lflags => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian -set floattype tandem_float'") }, + shared_ldflag => sub { join(" ",@_,"-Wsystype=guardian -Weld='-set systype guardian -export_all -set floattype tandem_float -soname \$\(\@:lib%.so=%\)'") }, + #shared_extension => " ", + defines => ["OPENSSL_VPROC=\$(OPENSSL_VPROC)","_XOPEN_SOURCE","_XOPEN_SOURCE_EXTENDED=1", "_TANDEM_SOURCE", "B_ENDIAN", "OPENSSL_SYSNAME_TANDEM", "NO_GETPID"], + disable => ["threads"], + bn_ops => "THIRTY_TWO_BIT", + }, diff --git a/NOTES.HPNS b/NOTES.HPNS new file mode 100644 index 0000000000000000000000000000000000000000..359f18b3a8e579e79ff6a9a349a216dd1d83bd0e --- /dev/null +++ b/NOTES.HPNS @@ -0,0 +1,42 @@ +## Probably have to be set: +# COMP_ROOT=$(cygpath -w /path/to/comp_rooot) # must be path format for system (ie windows) +# CC=/path/to/c99 # must be executable by shell + +## Optionally +# DBGFLAG="--debug" +# CIPHENABLES="enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-rc4" +# onplatform cross compile (nsx->nsi): SYSTEMLIBS="-L/E/cs3/usr/local/lib" +## VPROC +## For Itanium: +# OPENSSL_VPROC_PREFIX=T0085H06 +## For X86: +# OPENSSL_VPROC_PREFIX=T0085L01 +# export OPENSSL_VPROC=${OPENSSL_VPROC_PREFIX}_$(cat include/openssl/opensslv.h |\ +# sed -n -e 's/^ *# *define *OPENSSL_VERSION_TEXT[^"]*"\([^"]*\)"/\1/p' |\ +# sed -e 's/[. ]/_/g' -e 's/[.-]/_/g' |\ +# grep -v fips \ +# ) + +## Current Configure targets +# Guardian targets' libraries will have so-names 'ssl' and 'crypto' +./Configure nonstop-nsx --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_g --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_put --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_spt --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_64 --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_64_put --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nsx_g_tandem --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} + +./Configure nonstop-nse --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_g --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_put --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_spt --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_64 --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_64_put --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine threads "-D_REENTRANT" --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} +./Configure nonstop-nse_g_tandem --prefix=${PWD}/install --openssldir=${PWD}/install no-dynamic-engine no-threads --with-rand-seed=egd ${CIPHENABLES} ${DBGFLAG} ${SYSTEMLIBS} + +## Build loop: +# Configure <...> +# Make +# ... +# Make install diff --git a/apps/ca.c b/apps/ca.c index f6a928a0e8c8d8ef336c669f3043f90dba15d5f2..3c2bee8f2fdc63cc3076e245ff5e6ea17be691ba 100644 --- a/apps/ca.c +++ b/apps/ca.c @@ -26,7 +26,7 @@ #ifndef W_OK # ifdef OPENSSL_SYS_VMS # include -# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) +# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYSNAME_TANDEM) # include # endif #endif diff --git a/apps/lib/apps.c b/apps/lib/apps.c index f2c384494fbf7937e7dee71cea888c0b6ebecebb..5d95ce0c652223138800d807df93b8a2ce3acde0 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -2399,6 +2399,11 @@ int raw_read_stdin(void *buf, int siz) return recv(fileno_stdin(), buf, siz, 0); } #else +# if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +# endif int raw_read_stdin(void *buf, int siz) { return read(fileno_stdin(), buf, siz); @@ -2414,7 +2419,22 @@ int raw_write_stdout(const void *buf, int siz) else return -1; } +#elif defined(OPENSSL_SYSNAME_TANDEM) && defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +# if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +# endif +int raw_write_stdout(const void *buf,int siz) +{ + return write(fileno(stdout),(void*)buf,siz); +} #else +# if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +# endif int raw_write_stdout(const void *buf, int siz) { return write(fileno_stdout(), buf, siz); diff --git a/apps/lib/http_server.c b/apps/lib/http_server.c index 5c009b99902e9af9b37d974ef8e6d79f4ed0ea42..b7d98420130063716dde3ae5600a68fbdb8bbc25 100644 --- a/apps/lib/http_server.c +++ b/apps/lib/http_server.c @@ -24,6 +24,12 @@ #include #include +#if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +#endif + int multi = 0; /* run multiple responder processes */ #ifdef HTTP_DAEMON diff --git a/apps/lib/s_socket.c b/apps/lib/s_socket.c index b9baef913dc7deff248b8a00604a800959e194b2..890bd39414858666ac1f7ab1f3d54d2eef31258a 100644 --- a/apps/lib/s_socket.c +++ b/apps/lib/s_socket.c @@ -32,6 +32,12 @@ typedef unsigned int u_int; # include "s_apps.h" # include "internal/sockets.h" +# if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +# endif + # include # include diff --git a/apps/ocsp.c b/apps/ocsp.c index 0aca4b7622340f3d7664903de9b1df865db841a0..4f42d66c0ed1a2c2894cbfd6ffd7ad11689ede7e 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -38,6 +38,12 @@ DEFINE_STACK_OF(CONF_VALUE) DEFINE_STACK_OF(X509) DEFINE_STACK_OF_STRING() +#if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +#endif + #if defined(OPENSSL_SYS_VXWORKS) /* not supported */ int setpgid(pid_t pid, pid_t pgid) diff --git a/apps/provider.c b/apps/provider.c index 7d3581153b42c9219564b3b27a05ea330386db8d..748b95023e8a7c8479fcaa96ba58e11143c424a2 100644 --- a/apps/provider.c +++ b/apps/provider.c @@ -20,6 +20,10 @@ #include #include +#ifdef __TANDEM +# include /* memset */ +#endif + DEFINE_STACK_OF_CSTRING() typedef enum OPTION_choice { diff --git a/apps/speed.c b/apps/speed.c index 4bd42d4e423116c403f0f80cfb38df7ba735612d..017c5a280ab79c10d64075cd732315222e8c6859 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -37,6 +37,12 @@ # include #endif +#if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +#endif + #if defined(_WIN32) # include #endif diff --git a/apps/version.c b/apps/version.c index ebdd03e0fe9afbacced2ffdc5f75abbca54e8503..4a289faca0ffed97847e887367d065a82d917ed1 100644 --- a/apps/version.c +++ b/apps/version.c @@ -134,3 +134,16 @@ opthelp: end: return ret; } + + +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* + * Define a VPROC function for the openssl program. + * This is used by platform version identification tools. + * Do not inline this procedure or make it static. + */ +# define OPENSSL_VPROC_STRING_(x) x##_OPENSSL +# define OPENSSL_VPROC_STRING(x) OPENSSL_VPROC_STRING_(x) +# define OPENSSL_VPROC_FUNC OPENSSL_VPROC_STRING(OPENSSL_VPROC) +void OPENSSL_VPROC_FUNC(void) {} +#endif diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c index 79f7743b2f5d6a14186f4648d3ffafa5b15f5342..61dbf474f985d949427c239e60c55f1f04501d61 100644 --- a/crypto/bio/b_sock.c +++ b/crypto/bio/b_sock.c @@ -23,7 +23,13 @@ static int wsa_init_done = 0; # endif -# ifndef _WIN32 +# if defined __TANDEM +# include +# include /* select */ +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +# elif !defined _WIN32 # include # include # else diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 5475429abdc7c71170f8a9daaac51e13a76c1c01..6f7c06afd70b49d8eeb2ed083ba0f94152a2cd72 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -11,6 +11,9 @@ #include #include +#ifdef __TANDEM +# include /* strcasecmp */ +#endif #include "internal/cryptlib.h" #include "internal/o_dir.h" #include diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index bc29a3b583d63525eb12c2b4665f650e56c41a70..0f6d38e67b9b38a5e26d8e550d987db9062b89d1 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -471,3 +471,15 @@ size_t OPENSSL_instrument_bus2(unsigned int *out, size_t cnt, size_t max) return 0; } #endif + +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* + * Define a VPROC function for HP NonStop build crypto library. + * This is used by platform version identification tools. + * Do not inline this procedure or make it static. + */ +# define OPENSSL_VPROC_STRING_(x) x##_CRYPTO +# define OPENSSL_VPROC_STRING(x) OPENSSL_VPROC_STRING_(x) +# define OPENSSL_VPROC_FUNC OPENSSL_VPROC_STRING(OPENSSL_VPROC) +void OPENSSL_VPROC_FUNC(void) {} +#endif /* __TANDEM */ diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c index b8bbed87e84d0d03b741e1d3dbc8dd0f8a307ce9..bb34c6ed4299eb750aa55674aaf72e387d58ac60 100644 --- a/crypto/dso/dso_dlfcn.c +++ b/crypto/dso/dso_dlfcn.c @@ -32,7 +32,7 @@ DEFINE_STACK_OF(void) # if defined(__SCO_VERSION__) || defined(_SCO_ELF) || \ (defined(__osf__) && !defined(RTLD_NEXT)) || \ (defined(__OpenBSD__) && !defined(RTLD_SELF)) || \ - defined(__ANDROID__) + defined(__ANDROID__) || defined(__TANDEM) # undef HAVE_DLINFO # endif # endif diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c index cd8753194316a948ebd843b0e385938f3c06fce7..c6dcd87f0461e56303e0f0a94cf68ac6bf33bf22 100644 --- a/crypto/rand/rand_egd.c +++ b/crypto/rand/rand_egd.c @@ -54,6 +54,60 @@ struct sockaddr_un { # include # include +# if defined(OPENSSL_SYSNAME_TANDEM) +/* + * HPNS: + * + * Our current MQ 5.3 EGD requies compatability-mode sockets + * This code forces the mode to compatibility if required + * and then restores the mode. + * + * Needs review: + * + * The better long-term solution is to either run two EGD's each in one of + * the two modes or revise the EGD code to listen on two different sockets + * (each in one of the two modes). + */ +_variable +int hpns_socket(int family, + int type, + int protocol, + char* transport) +{ + int socket_rc; + char current_transport[20]; + +# define AF_UNIX_PORTABILITY "$ZAFN2" +# define AF_UNIX_COMPATIBILITY "$ZPLS" + + if (!_arg_present(transport) || transport != NULL || transport[0] == '\0') + return socket(family, type, protocol); + + socket_transport_name_get(AF_UNIX, current_transport, 20); + + if (strcmp(current_transport,transport) == 0) + return socket(family, type, protocol); + + /* set the requested socket transport */ + if (socket_transport_name_set(AF_UNIX, transport)) + return -1; + + socket_rc = socket(family,type,protocol); + + /* set mode back to what it was */ + if (socket_transport_name_set(AF_UNIX, current_transport)) + return -1; + + return socket_rc; +} + +/*#define socket(a,b,c,...) hpns_socket(a,b,c,__VA_ARGS__) */ + +static int hpns_connect_attempt = 0; + +# endif /* defined(OPENSSL_SYS_HPNS) */ + + int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) { FILE *fp = NULL; @@ -71,7 +125,11 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) return -1; strcpy(addr.sun_path, path); i = offsetof(struct sockaddr_un, sun_path) + strlen(path); +#if defined(OPENSSL_SYSNAME_TANDEM) + fd = hpns_socket(AF_UNIX, SOCK_STREAM, 0, AF_UNIX_COMPATIBILITY); +#else fd = socket(AF_UNIX, SOCK_STREAM, 0); +#endif if (fd == -1 || (fp = fdopen(fd, "r+")) == NULL) return -1; setbuf(fp, NULL); @@ -100,6 +158,18 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) /* No error, try again */ break; default: +# if defined(OPENSSL_SYSNAME_TANDEM) + if (hpns_connect_attempt == 0) { + /* try the other kind of AF_UNIX socket */ + close(fd); + fd = hpns_socket(AF_UNIX, SOCK_STREAM, 0, AF_UNIX_PORTABILITY); + if (fd == -1) + return -1; + ++hpns_connect_attempt; + break; /* try the connect again */ + } +# endif + ret = -1; goto err; } diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c index 8b60251e776714d912bf773d6ca075105b55c4c8..936aa7f0c7e473ffd4647289c8b4aed33673ef65 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -49,7 +49,11 @@ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void) } pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + #if defined(__TANDEM) && defined(_SPT_MODEL_) + pthread_mutexattr_setkind_np(&attr,MUTEX_RECURSIVE_NP); + #else + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + #endif if (pthread_mutex_init(lock, &attr) != 0) { pthread_mutexattr_destroy(&attr); diff --git a/e_os.h b/e_os.h index c035568464575684d711a759d3116a8048d94e7b..979be9b2b1f637cc3da68db3354c5fe6e2682423 100644 --- a/e_os.h +++ b/e_os.h @@ -295,6 +295,64 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ +/* ----------------------------- HP NonStop -------------------------------- */ +/* Required to support platform variant without getpid() and pid_t. */ +# ifdef __TANDEM +# include +# include +# define getservbyname(name,proto) getservbyname((char*)name,proto) +# define gethostbyname(name) gethostbyname((char*)name) +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# ifdef NO_GETPID +inline int nssgetpid(); +# ifndef NSSGETPID_MACRO +# define NSSGETPID_MACRO +# include +# include + inline int nssgetpid() + { + short phandle[10]={0}; + union pseudo_pid { + struct { + short cpu; + short pin; + } cpu_pin ; + int ppid; + } ppid = { 0 }; + PROCESSHANDLE_GETMINE_(phandle); + PROCESSHANDLE_DECOMPOSE_(phandle, &ppid.cpu_pin.cpu, &ppid.cpu_pin.pin); + return ppid.ppid; + } +# define getpid(a) nssgetpid(a) +# endif /* NSSGETPID_MACRO */ +# endif /* NO_GETPID */ +/*# define setsockopt(a,b,c,d,f) setsockopt(a,b,c,(char*)d,f)*/ +/*# define getsockopt(a,b,c,d,f) getsockopt(a,b,c,(char*)d,f)*/ +/*# define connect(a,b,c) connect(a,(struct sockaddr *)b,c)*/ +/*# define bind(a,b,c) bind(a,(struct sockaddr *)b,c)*/ +/*# define sendto(a,b,c,d,e,f) sendto(a,(char*)b,c,d,(struct sockaddr *)e,f)*/ +# if defined(OPENSSL_THREADS) && !defined(_PUT_MODEL_) + /* + * HPNS SPT threads + */ +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# undef close +# define close spt_close +/* +# define get_last_socket_error() errno +# define clear_socket_error() errno=0 +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# define closesocket(s) close(s) +# define readsocket(s,b,n) read((s),(char*)(b),(n)) +# define writesocket(s,b,n) write((s),(char*)(b),(n) +*/ +# define accept(a,b,c) accept(a,(struct sockaddr *)b,c) +# define recvfrom(a,b,c,d,e,f) recvfrom(a,b,(socklen_t)c,d,e,f) +# endif +# endif + # ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION # define CRYPTO_memcmp memcmp # endif diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index 1df0c5df343da16dab84b10074872fc2a12d899f..a01b1f15d5762372bba736653186e3dd38f04660 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -215,6 +215,10 @@ static ossl_inline void ossl_sleep(unsigned long millis) ts.tv_sec = (long int) (millis / 1000); ts.tv_nsec = (long int) (millis % 1000) * 1000000ul; nanosleep(&ts, NULL); +# elif defined(__TANDEM) && !defined(_REENTRANT) +# include + /* HPNS does not support usleep for non threaded apps */ + PROCESS_DELAY_(millis * 1000); # else usleep(millis * 1000); # endif diff --git a/include/internal/sockets.h b/include/internal/sockets.h index 6d17363d9b2672658fa473c47eb3116ed5ebe094..e3a6bd459b70ec604290adee6e8691dcf668dd8e 100644 --- a/include/internal/sockets.h +++ b/include/internal/sockets.h @@ -145,6 +145,17 @@ struct servent *PASCAL getservbyname(const char *, const char *); # define closesocket(s) close(s) # define readsocket(s,b,n) read((s),(b),(n)) # define writesocket(s,b,n) write((s),(char *)(b),(n)) +# elif defined(OPENSSL_SYSNAME_TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# define readsocket(s,b,n) floss_read((s),(b),(n)) +# define writesocket(s,b,n) floss_write((s),(b),(n)) +# else +# define readsocket(s,b,n) read((s),(b),(n)) +# define writesocket(s,b,n) write((s),(b),(n)) +# endif +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# define closesocket(s) close(s) # else # define ioctlsocket(a,b,c) ioctl(a,b,c) # define closesocket(s) close(s) diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h index abd3a68cd49f3d7e6b81306492632ebb9e42333f..a7c2863b548febb0d6a8c739f8bfdb0540480978 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -464,7 +464,13 @@ typedef LONG CRYPTO_ONCE; # define CRYPTO_ONCE_STATIC_INIT 0 # endif # else -# include +# if defined(__TANDEM) && defined(_SPT_MODEL_) +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# else +# include +# endif typedef pthread_once_t CRYPTO_ONCE; typedef pthread_key_t CRYPTO_THREAD_LOCAL; typedef pthread_t CRYPTO_THREAD_ID; diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index 7b51939e3d0e542ae3074216f88335f9857038dd..13420d99283511a271ae08dac778f2cce2398f72 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -138,6 +138,21 @@ extern "C" { # endif # endif +/* ---------------------------- HP NonStop -------------------------------- */ +# ifdef __TANDEM +# ifdef _STRING +# include +# endif +# define OPENSSL_USE_BUILD_DATE +# if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +# include +# endif +# endif + /** * That's it for OS-specific stuff *****************************************************************************/ diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index ad1cfb4f40fa3d9cce2b9503f45c8c98ee07ba4d..a036ac29e986b724cd2db4240252b52d73fe62c4 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -556,6 +556,19 @@ static int ssl_check_allowed_versions(int min_version, int max_version) return 1; } +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* + * Define a VPROC function for HP NonStop build ssl library. + * This is used by platform version identification tools. + * Do not inline this procedure or make it static. + */ +# define OPENSSL_VPROC_STRING_(x) x##_SSL +# define OPENSSL_VPROC_STRING(x) OPENSSL_VPROC_STRING_(x) +# define OPENSSL_VPROC_FUNC OPENSSL_VPROC_STRING(OPENSSL_VPROC) +void OPENSSL_VPROC_FUNC(void) {} +#endif + + static void clear_ciphers(SSL *s) { /* clear the current cipher */ diff --git a/test/bntest.c b/test/bntest.c index 252bac4d8ed3b5d71c779a09c9950ee4edc05b2e..5ec35181f1d6116b39cb87ac4cc4a58f65aa674e 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -10,6 +10,9 @@ #include #include #include +#ifdef __TANDEM +# include /* strcasecmp */ +#endif #include #include diff --git a/test/drbgtest.c b/test/drbgtest.c index d069460cd58d80c63b47ca46341cd4d285f25d13..2ded33aa7ff44d01a06d172a81b06e1b2d4da496 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -31,6 +31,11 @@ # include #endif +#if defined(__TANDEM) +# if defined(OPENSSL_TANDEM_FLOSS) +# include +# endif +#endif #if defined(OPENSSL_SYS_UNIX) # include diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t index d339770b0fabd6b46e5548686fb5fdf847862e4d..f22133d9d2d8e999b9deddcd45109fe61cfc1efa 100644 --- a/test/recipes/01-test_symbol_presence.t +++ b/test/recipes/01-test_symbol_presence.t @@ -17,6 +17,8 @@ setup("test_symbol_presence"); plan skip_all => "Only useful when building shared libraries" if disabled("shared"); +plan skip_all => "Test is disabled on NonStop" if config('target') =~ m|^nonstop|; + my @libnames = ("crypto", "ssl"); my $testcount = scalar @libnames; diff --git a/test/recipes/90-test_shlibload.t b/test/recipes/90-test_shlibload.t index fee56cd25463eace839e9a7e0aa06dd785da5af1..96e3e6e12e268178c15775a7572ef64e07aefd5e 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -21,6 +21,7 @@ use platform; plan skip_all => "Test only supported in a shared build" if disabled("shared"); plan skip_all => "Test is disabled on AIX" if config('target') =~ m|^aix|; +plan skip_all => "Test is disabled on NonStop" if config('target') =~ m|^nonstop|; plan skip_all => "Test only supported in a dso build" if disabled("dso"); plan tests => 10;