summaryrefslogtreecommitdiffstats
path: root/Configurations
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2021-05-17 23:40:32 +0200
committerRichard Levitte <levitte@openssl.org>2021-05-19 12:31:34 +0200
commit31be74d3ca8809752b7dfd37394f28c76c519fa5 (patch)
tree12cf7eea04b157bc9b857e65ddc4445e78d2a335 /Configurations
parent8ba3a15816c6e417967eac13ee415325c52675b4 (diff)
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)
Diffstat (limited to 'Configurations')
-rw-r--r--Configurations/10-main.conf10
1 files changed, 6 insertions, 4 deletions
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index b7c9565b38..122d3f46db 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -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