mirror of
https://github.com/openssl/openssl.git
synced 2024-12-09 05:51:54 +08:00
99fb31c167
This fixes an issue with a mix of atexit() usage in DLL and statically linked libcrypto that came out in the test suite on NonStop, which has slightly different DLL unload processing semantics compared to Linux. The change allows a build configuration to select whether to register OPENSSL_cleanup() with atexit() or not, so avoid situations where atexit() registration causes SIGSEGV. INSTALL.md and CHANGES.md have been modified to include and describe this option. The no-atexit option has been added to .github/workflows/run-checker-daily.yml. Fixes: #23135 Signed-of-by: Randall S. Becker <randall.becker@nexbridge.ca> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Neil Horman <nhorman@openssl.org> Reviewed-by: Todd Short <todd.short@me.com> (Merged from https://github.com/openssl/openssl/pull/23394)
278 lines
11 KiB
Plaintext
278 lines
11 KiB
Plaintext
#### Nonstop configurations
|
|
# Common for all
|
|
'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',
|
|
'-Wverbose'),
|
|
defines => add('OPENSSL_VPROC=$(OPENSSL_VPROC)',
|
|
'_XOPEN_SOURCE',
|
|
'_XOPEN_SOURCE_EXTENDED=1',
|
|
'_TANDEM_SOURCE',
|
|
'__NSK_OPTIONAL_TYPES__',
|
|
'B_ENDIAN'),
|
|
perl => '/usr/bin/perl',
|
|
shared_target => 'nonstop-shared',
|
|
shared_extension => ".so",
|
|
ex_libs => add('-lrld'),
|
|
enable => ['egd'],
|
|
# Not currently inherited
|
|
disable => ['atexit'],
|
|
dso_scheme => 'DLFCN',
|
|
sys_id => 'TANDEM',
|
|
},
|
|
|
|
######################################################################
|
|
# Additional variant settings, to be combined with nonstop-common
|
|
# Note that these do not inherit anything. However, the diverse values
|
|
# are merged with other entries in an 'inherit_from'.
|
|
#
|
|
# These combine:
|
|
# - System architecture (MIPS, Itanium, or x86)
|
|
# - Execution environment (oss [default] or guardian)
|
|
#
|
|
# Unfortunately, they can't be separated into independent templates, because
|
|
# a number of the above are encoded as different linkers, and by consequence,
|
|
# different c99 linker flags (-Wld, -Weld, and -Wxld)
|
|
#
|
|
# In addition, the are modifiers for:
|
|
# - Size of long + pointer (ilp32 [default] and lp64)
|
|
# - Float type (neutral and tandem)
|
|
#
|
|
# Unfortunately, because the float types affect the linker settings, those
|
|
# are divided per system architecture
|
|
#
|
|
# MIPS + guardian (unused but present for convenience):
|
|
'nonstop-archenv-mips-guardian' => {
|
|
template => 1,
|
|
defines => ['NO_GETPID'],
|
|
cflags => '-Wtarget=tns/r -Wsystype=guardian',
|
|
lflags => '-Wld="-set systype guardian"',
|
|
shared_ldflag => '-Wshared -Wld="-soname $(@:lib%.so=%)"',
|
|
shared_defflag => '-Wld_obey=',
|
|
shared_argfileflag => '-Wld_obey=',
|
|
},
|
|
|
|
# Itanium + guardian:
|
|
'nonstop-archenv-itanium-guardian' => {
|
|
template => 1,
|
|
defines => ['NO_GETPID'],
|
|
cflags => '-Wtarget=tns/e -Wsystype=guardian',
|
|
lflags => '-Weld="-set systype guardian"',
|
|
shared_ldflag => '-Wshared -Weld="-soname $(@:lib%.so=%)"',
|
|
shared_defflag => '-Weld_obey=',
|
|
shared_argfileflag => '-Weld_obey=',
|
|
},
|
|
|
|
# x86 + guardian:
|
|
'nonstop-archenv-x86_64-guardian' => {
|
|
template => 1,
|
|
defines => ['NO_GETPID'],
|
|
cflags => '-Wtarget=tns/x -Wsystype=guardian',
|
|
lflags => '-Wxld="-set systype guardian"',
|
|
shared_ldflag => '-Wshared -Wxld="-soname $(@:lib%.so=%)"',
|
|
shared_defflag => '-Wxld_obey=',
|
|
shared_argfileflag => '-Wxld_obey=',
|
|
},
|
|
|
|
# MIPS + oss (unused but present for convenience):
|
|
'nonstop-archenv-mips-oss' => {
|
|
template => 1,
|
|
cflags => '-Wtarget=tns/r -Wsystype=oss',
|
|
lflags => '-Wld="-set systype oss"',
|
|
shared_ldflag => '-Wshared',
|
|
shared_defflag => '-Wld_obey=',
|
|
shared_argfileflag => '-Wld_obey=',
|
|
},
|
|
# Itanium + oss:
|
|
'nonstop-archenv-itanium-oss' => {
|
|
template => 1,
|
|
cflags => '-Wtarget=tns/e -Wsystype=oss',
|
|
lflags => '-Weld="-set systype oss"',
|
|
shared_ldflag => '-Wshared',
|
|
shared_defflag => '-Weld_obey=',
|
|
shared_argfileflag => '-Weld_obey=',
|
|
},
|
|
# x86_64 + oss:
|
|
'nonstop-archenv-x86_64-oss' => {
|
|
template => 1,
|
|
cflags => '-Wtarget=tns/x -Wsystype=oss',
|
|
lflags => '-Wxld="-set systype oss"',
|
|
shared_ldflag => '-Wshared',
|
|
shared_defflag => '-Wxld_obey=',
|
|
shared_argfileflag => '-Wxld_obey=',
|
|
},
|
|
|
|
# Size variants
|
|
'nonstop-ilp32' => {
|
|
template => 1,
|
|
cflags => '-Wilp32',
|
|
bn_ops => 'THIRTY_TWO_BIT',
|
|
},
|
|
'nonstop-lp64-itanium' => {
|
|
template => 1,
|
|
cflags => '-Wlp64',
|
|
bn_ops => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR',
|
|
},
|
|
'nonstop-lp64-x86_64' => {
|
|
template => 1,
|
|
cflags => '-Wlp64',
|
|
lflags => '-Wxld="-set data_model lp64"',
|
|
bn_ops => 'SIXTY_FOUR_BIT',
|
|
},
|
|
|
|
# Float variants
|
|
'nonstop-nfloat-mips' => {
|
|
template => 1,
|
|
lflags => '-Wld="-set floattype neutral_float"',
|
|
},
|
|
'nonstop-tfloat-mips' => {
|
|
template => 1,
|
|
lflags => '-Wld="-set floattype tandem_float"',
|
|
},
|
|
'nonstop-efloat-itanium' => {
|
|
template => 1,
|
|
cflags => '-WIEEE_float',
|
|
lflags => '-Weld="-set floattype ieee_float"',
|
|
},
|
|
'nonstop-nfloat-itanium' => {
|
|
template => 1,
|
|
lflags => '-Weld="-set floattype neutral_float"',
|
|
},
|
|
'nonstop-tfloat-itanium' => {
|
|
template => 1,
|
|
cflags => '-WTandem_float',
|
|
lflags => '-Weld="-set floattype tandem_float"',
|
|
},
|
|
'nonstop-efloat-x86_64' => {
|
|
template => 1,
|
|
cflags => '-WIEEE_float',
|
|
lflags => '-Wxld="-set floattype ieee_float"',
|
|
},
|
|
'nonstop-nfloat-x86_64' => {
|
|
template => 1,
|
|
lflags => '-Wxld="-set floattype neutral_float"',
|
|
},
|
|
'nonstop-tfloat-x86_64' => {
|
|
template => 1,
|
|
cflags => '-WTandem_float',
|
|
lflags => '-Wxld="-set floattype tandem_float"',
|
|
},
|
|
|
|
######################################################################
|
|
# Build models
|
|
'nonstop-model-put' => {
|
|
template => 1,
|
|
defines => ['_PUT_MODEL_',
|
|
'_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'],
|
|
ex_libs => '-lput',
|
|
},
|
|
|
|
######################################################################
|
|
# Now for the entries themselves, let's combine things!
|
|
'nonstop-nsx' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-oss',
|
|
'nonstop-ilp32',
|
|
'nonstop-efloat-x86_64' ],
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nsx_put' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-oss',
|
|
'nonstop-ilp32',
|
|
'nonstop-efloat-x86_64',
|
|
'nonstop-model-put' ],
|
|
multilib => '-put',
|
|
multibin => '-put',
|
|
disable => ['atexit'],
|
|
},
|
|
'nonstop-nsx_64' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-oss',
|
|
'nonstop-lp64-x86_64',
|
|
'nonstop-efloat-x86_64' ],
|
|
multilib => '64',
|
|
multibin => '64',
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nsx_64_put' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-oss',
|
|
'nonstop-lp64-x86_64',
|
|
'nonstop-efloat-x86_64',
|
|
'nonstop-model-put' ],
|
|
multilib => '64-put',
|
|
multibin => '64-put',
|
|
disable => ['atexit'],
|
|
},
|
|
'nonstop-nsx_g' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-guardian',
|
|
'nonstop-ilp32', 'nonstop-nfloat-x86_64' ],
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nsx_g_tandem' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-x86_64-guardian',
|
|
'nonstop-ilp32', 'nonstop-tfloat-x86_64' ],
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nsv' => {
|
|
inherit_from => [ 'nonstop-nsx' ],
|
|
},
|
|
'nonstop-nse' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-oss',
|
|
'nonstop-ilp32',
|
|
'nonstop-efloat-itanium' ],
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nse_put' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-oss',
|
|
'nonstop-ilp32',
|
|
'nonstop-efloat-itanium',
|
|
'nonstop-model-put' ],
|
|
multilib => '-put',
|
|
multibin => '-put',
|
|
disable => ['atexit'],
|
|
},
|
|
'nonstop-nse_64' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-oss',
|
|
'nonstop-lp64-itanium',
|
|
'nonstop-efloat-itanium' ],
|
|
multilib => '64',
|
|
multibin => '64',
|
|
disable => ['threads','atexit'],
|
|
},
|
|
'nonstop-nse_64_put' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-oss',
|
|
'nonstop-lp64-itanium',
|
|
'nonstop-efloat-itanium',
|
|
'nonstop-model-put' ],
|
|
multilib => '64-put',
|
|
multibin => '64-put',
|
|
disable => ['atexit'],
|
|
},
|
|
'nonstop-nse_g' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-guardian',
|
|
'nonstop-ilp32', 'nonstop-nfloat-itanium' ],
|
|
disable => ['threads','atexit'],
|
|
},
|
|
|
|
'nonstop-nse_g_tandem' => {
|
|
inherit_from => [ 'nonstop-common',
|
|
'nonstop-archenv-itanium-guardian',
|
|
'nonstop-ilp32', 'nonstop-tfloat-itanium' ],
|
|
disable => ['threads','atexit'],
|
|
},
|