diff options
author | Richard Levitte <levitte@openssl.org> | 2021-05-17 23:40:32 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2021-05-19 12:31:34 +0200 |
commit | 31be74d3ca8809752b7dfd37394f28c76c519fa5 (patch) | |
tree | 12cf7eea04b157bc9b857e65ddc4445e78d2a335 /Configurations | |
parent | 8ba3a15816c6e417967eac13ee415325c52675b4 (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.conf | 10 |
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 |