diff --git a/Configurations/50-nonstop.conf b/Configurations/50-nonstop.conf new file mode 100644 index 0000000000000..247d648f0a1a2 --- /dev/null +++ b/Configurations/50-nonstop.conf @@ -0,0 +1,206 @@ +#### 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_ieee" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -I/usr/local/include -WIEEE_float") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -I/usr/local/include -WIEEE_float") }, + lflags => sub { join(" ",@_,"-lfloss -Wxld='-set floattype ieee_float' -Wsystype=oss") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Wxld='-export_all -set floattype ieee_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 -I/usr/local/include") }, + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose -I/usr/local/include") }, + 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_ieee" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wlp64 -Wverbose -WIEEE_float -I/usr/local/include") }, + shared_cflag => sub { join(" ",@_,"-Wlp64 -Wverbose -WIEEE_float -I/usr/local/include") }, + lflags => sub { join(" ",@_,"-L/usr/local/lib -lfloss -Wlp64") }, + shared_ldflag => sub { join(" ",@_,"-L/usr/local/lib -lfloss -Wxld='-export_all -set data_model lp64 -set floattype ieee_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_ieee" => { + inherit_from => [ "nonstop-common" ], + cflags => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include -WIEEE_float") }, + shared_cflag => sub { join(" ",@_,"-Wverbose -Wtarget=tns/e -I/usr/local/include -WIEEE_float") }, + lflags => sub { join(" ",@_,"-lfloss") }, + shared_ldflag => sub { join(" ",@_,"-lfloss -Weld='-export_all -set floattype ieee_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 0000000000000..359f18b3a8e57 --- /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/apps.c b/apps/apps.c index f2447fb0bef8b..85b68072010f7 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -2468,6 +2468,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); @@ -2483,7 +2488,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/ca.c b/apps/ca.c index ea375ca0b1d3d..fa4f2dfbf8742 100755 --- 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/ocsp.c b/apps/ocsp.c index 8f20864cea518..69c7ccc3839c0 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -64,7 +64,14 @@ # define LOG_ERR 2 #endif +#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/s_socket.c b/apps/s_socket.c index 96f16d2931cd4..d3afc3dcb7410 100644 --- a/apps/s_socket.c +++ b/apps/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/speed.c b/apps/speed.c index 89bf18480fa1b..1e518a7e9d626 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -32,6 +32,12 @@ # include OPENSSL_UNISTD #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 2aca1636152bb..f0e1dc8149045 100644 --- a/apps/version.c +++ b/apps/version.c @@ -192,3 +192,12 @@ int version_main(int argc, char **argv) end: return ret; } + + +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* Define a VPROC function for the openssl program */ +# 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/conf/conf_def.c b/crypto/conf/conf_def.c index 31c02cc49e22b..efc9a6d87cd68 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -11,6 +11,9 @@ #include #include +#ifdef __TANDEM +#include +#endif #include "internal/cryptlib.h" #include "internal/o_dir.h" #include diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c index add1dfa1c1813..0c84aac9ae3f1 100644 --- a/crypto/conf/conf_lib.c +++ b/crypto/conf/conf_lib.c @@ -10,6 +10,9 @@ #include "e_os.h" #include #include +#ifdef __TANDEM +#include +#endif #include "internal/conf.h" #include "crypto/ctype.h" #include diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index 1f36b20c86ed6..fc3c7508df666 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -471,3 +471,11 @@ size_t OPENSSL_instrument_bus2(unsigned int *out, size_t cnt, size_t max) return 0; } #endif + +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* Define VPROC function for HP NonStop build crypto library */ +# 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 4719e8f4f3376..491f11019a0f9 100644 --- a/crypto/dso/dso_dlfcn.c +++ b/crypto/dso/dso_dlfcn.c @@ -30,7 +30,7 @@ # 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 da3017df31424..2734a4b64b507 100644 --- a/crypto/rand/rand_egd.c +++ b/crypto/rand/rand_egd.c @@ -57,6 +57,71 @@ struct sockaddr_un { # include # include +#if defined(OPENSSL_SYSNAME_TANDEM) +/* + * HPNS: + * + * This code forces the use of compatibility mode if required on HPE NonStop + * when coreutils PRNGD is used and then restores the previous mode + * after establishing the socket. This is not required on x86 where hardware + * randomization should be used instead of EGD available as of OpenSSL 3.0. + * Use --with-rand-seed=rdcpu when configuring x86 with 3.0 and above. + * + * 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) or use the hardware randomizer. + */ +_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 || 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__) */ + +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; @@ -74,7 +139,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); @@ -103,6 +172,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 1774a2b2ac160..aa79536f388df 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -45,7 +45,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 9af7f3758d94d..34ccfb9f8fd5c 100644 --- a/e_os.h +++ b/e_os.h @@ -345,6 +345,63 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ +/* ----------------------------- HP NonStop -------------------------------- */ +#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; + } +# endif /* NSSGETPID_MACRO */ +# define getpid(a) nssgetpid(a) +# 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/sockets.h b/include/internal/sockets.h index 4fc1aecdbb209..132a343d6f949 100644 --- a/include/internal/sockets.h +++ b/include/internal/sockets.h @@ -147,6 +147,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 7d0b526236f8e..668315d99c3bf 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -412,7 +412,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 5c88e5194919b..908fd984eb7e4 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -132,6 +132,44 @@ extern "C" { # endif # endif +/* ---------------------------- HP NONSTOP -------------------------------- */ +# ifdef __TANDEM +# 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; + } +# endif /* NSSGETPID_MACRO */ +# define getpid(a) nssgetpid(a) +# endif /* NO_GETPID */ +# 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 47adc3211c85f..740e58b1e9a8c 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -566,6 +566,15 @@ static int ssl_check_allowed_versions(int min_version, int max_version) return 1; } +#if defined(__TANDEM) && defined(OPENSSL_VPROC) +/* Define VPROC function for HP NonStop build ssl library */ +# 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 9273e865668f1..7d4d7173c17cd 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -10,6 +10,9 @@ #include #include #include +#ifdef __TANDEM +#include +#endif #include #include diff --git a/test/drbgtest.c b/test/drbgtest.c index a9ba5b49393be..d57a89f99e2d5 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -22,6 +22,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 16395eeaf162d..b38e1cf583c23 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 8372a61e885f5..4749c9b697f8d 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -21,6 +21,7 @@ use configdata; 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 VMS" if config('target') =~ m|^vms|; +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; diff --git a/test/ssltestlib.c b/test/ssltestlib.c index 422787b0f5828..b3c81f649ffb2 100644 --- a/test/ssltestlib.c +++ b/test/ssltestlib.c @@ -24,6 +24,10 @@ static ossl_inline void ossl_sleep(unsigned int 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); # else usleep(millis * 1000); # endif diff --git a/util/shlib_wrap.sh.in b/util/shlib_wrap.sh.in index eac70ed972de2..eea8215d2666d 100755 --- a/util/shlib_wrap.sh.in +++ b/util/shlib_wrap.sh.in @@ -96,6 +96,15 @@ SunOS|IRIX*) eval $rld_var=\"${THERE}'${'$rld_var':+:$'$rld_var'}'\"; export $rld_var unset rld_var ;; +NONSTOP_KERNEL) + # HPE NonStop has a proprietary mechanism for specifying + # the location of DLLs. It does not use PATH or variables + # commonly used on other platforms. The platform has a limited + # environment space keeping extraneous variables to a minimum + # is recommended. + _RLD_LIB_PATH="${THERE}:$LD_LIBRARY_PATH" + export _RLD_LIB_PATH + ;; *) LD_LIBRARY_PATH="${THERE}:$LD_LIBRARY_PATH" # Linux, ELF HP-UX DYLD_LIBRARY_PATH="${THERE}:$DYLD_LIBRARY_PATH" # MacOS X SHLIB_PATH="${THERE}:$SHLIB_PATH" # legacy HP-UX