mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
VMS need to build DSO with name shortening, because of provider code
We have pretty long symbol names, so they need to be shortened to fit in the linker's 31 character limit on symbols. Symbol name shortening with the VMS C compiler works in such a way that a symbol name that's longer than 31 characters is mangled into its first original 22 characters, followed by a dollar sign and the 32-bit CRC of the original symbol name in hexadecimal. Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15317)
This commit is contained in:
parent
8ba3a15816
commit
31be74d3ca
@ -1837,10 +1837,12 @@ my %targets = (
|
||||
# and binaries instead.
|
||||
bin_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
|
||||
lib_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
|
||||
# For modules specifically, we assume that they only use public
|
||||
# OpenSSL symbols, and therefore don't need to mangle names on
|
||||
# their own.
|
||||
dso_cflags => "",
|
||||
# Strictly speaking, DSOs should not need to have name shortening,
|
||||
# as all their exported symbols should be short enough to fit the
|
||||
# linker's 31 character per symbol name limit. However, providers
|
||||
# may be composed of more than one object file, and internal symbols
|
||||
# may and do surpass the 31 character limit.
|
||||
dso_cflags => add("/NAMES=(SHORTENED)"),
|
||||
ex_libs => add(sub { return vms_info()->{zlib} || (); }),
|
||||
shared_target => "vms-shared",
|
||||
# def_flag made to empty string so a .opt file gets generated
|
||||
|
Loading…
Reference in New Issue
Block a user