From: Richard Levitte Date: Thu, 13 Sep 2018 15:02:53 +0000 (+0200) Subject: VMS: turn on name mangling for all our programs X-Git-Tag: openssl-3.0.0-alpha1~3118 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2935f6241c3a1f0dc6c7a6e0a95da4bc5f35439b;p=thirdparty%2Fopenssl.git VMS: turn on name mangling for all our programs With the change to have separate object files by intent, VMS name mangling gets done differently. While we previously had that for libraries only, we must now turn that on generally for our programs, because some of them depend in internal libraries where mangled names are all that there is. Dynamic modules are still built with non-mangled names, which is good enough to show that it's possible to build with our public libraries using our public headers. Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/7208) --- diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 5cf345da0af..8360bb36717 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -1732,10 +1732,15 @@ my %targets = ( lflags => picker(default => "/MAP='F\$PARSE(\".MAP\",\"\$\@\")'", debug => "/DEBUG/TRACEBACK", release => "/NODEBUG/NOTRACEBACK"), + # Because of dso_cflags below, we can't set the generic |cflags| here, + # as it can't be overriden, so we set separate C flags for libraries + # 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"), - # no_inst_lib_cflags is used instead of lib_cflags by descrip.mms.tmpl - # for object files belonging to selected internal libraries - no_inst_lib_cflags => "", + # 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 => "", ex_libs => add(sub { return vms_info()->{zlib} || (); }), shared_target => "vms-shared", dso_scheme => "vms", diff --git a/test/cipher_overhead_test.c b/test/cipher_overhead_test.c index f8c6fd738e5..8997fcc5d25 100644 --- a/test/cipher_overhead_test.c +++ b/test/cipher_overhead_test.c @@ -9,18 +9,8 @@ #include "internal/nelem.h" #include "testutil.h" - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../ssl/ssl_locl.h" -#ifdef __VMS -# pragma names restore -#endif - static int cipher_overhead(void) { int ret = 1, i, n = ssl3_num_ciphers(); diff --git a/test/curve448_internal_test.c b/test/curve448_internal_test.c index e7d4378527b..f0f10790739 100644 --- a/test/curve448_internal_test.c +++ b/test/curve448_internal_test.c @@ -10,18 +10,7 @@ #include #include #include - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "curve448_lcl.h" - -#ifdef __VMS -# pragma names restore -#endif - #include "testutil.h" static unsigned int max = 1000; diff --git a/test/ssl_cert_table_internal_test.c b/test/ssl_cert_table_internal_test.c index 2104e8c5163..bba4e441cbf 100644 --- a/test/ssl_cert_table_internal_test.c +++ b/test/ssl_cert_table_internal_test.c @@ -15,19 +15,9 @@ #include #include "testutil.h" #include "internal/nelem.h" - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../ssl/ssl_locl.h" #include "../ssl/ssl_cert_table.h" -#ifdef __VMS -# pragma names restore -#endif - #define test_cert_table(nid, amask, idx) \ do_test_cert_table(nid, amask, idx, #idx) diff --git a/test/tls13encryptiontest.c b/test/tls13encryptiontest.c index 6f359b3a2f6..f9f61a05a03 100644 --- a/test/tls13encryptiontest.c +++ b/test/tls13encryptiontest.c @@ -9,19 +9,8 @@ #include #include - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../ssl/ssl_locl.h" #include "../ssl/record/record_locl.h" - -#ifdef __VMS -# pragma names restore -#endif - #include "internal/nelem.h" #include "testutil.h" diff --git a/test/tls13secretstest.c b/test/tls13secretstest.c index 724c170c56b..319df17bab0 100644 --- a/test/tls13secretstest.c +++ b/test/tls13secretstest.c @@ -10,17 +10,7 @@ #include #include -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../ssl/ssl_locl.h" - -#ifdef __VMS -# pragma names restore -#endif - #include "testutil.h" #define IVLEN 12 diff --git a/test/wpackettest.c b/test/wpackettest.c index 773eef05252..71eb76346d1 100644 --- a/test/wpackettest.c +++ b/test/wpackettest.c @@ -9,18 +9,7 @@ #include #include - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../ssl/packet_locl.h" - -#ifdef __VMS -# pragma names restore -#endif - #include "testutil.h" static const unsigned char simple1[] = { 0xff }; diff --git a/test/x509_internal_test.c b/test/x509_internal_test.c index d2f41d70850..12f6ac95a85 100644 --- a/test/x509_internal_test.c +++ b/test/x509_internal_test.c @@ -23,18 +23,9 @@ * ***/ -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "../crypto/x509v3/ext_dat.h" #include "../crypto/x509v3/standard_exts.h" -#ifdef __VMS -# pragma names restore -#endif - static int test_standard_exts(void) { size_t i;