This only affects __DECC_INCLUDE_EPILOGUE.H and __DECC_INCLUDE_PROLOGUE.H,
which are used automatically by HP and VSI C/C++ compilers.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/11159)
(cherry picked from commit
605a0c709f4d50497a1c49ee117a0ec4bb956d58)
### Changes between 1.1.1d and 1.1.1e [xx XXX xxxx] ###
+ * *[VMS only]* The header files that the VMS compilers include automatically,
+ `__DECC_INCLUDE_PROLOGUE.H` and `__DECC_INCLUDE_EPILOGUE.H`, use pragmas
+ that the C++ compiler doesn't understand. This is a shortcoming in the
+ compiler, but can be worked around with `__cplusplus` guards.
+
+ C++ applications that use OpenSSL libraries must be compiled using the
+ qualifier `/NAMES=(AS_IS,SHORTENED)` to be able to use all the OpenSSL
+ functions. Otherwise, only functions with symbols of less than 31
+ characters can be used, as the linker will not be able to successfully
+ resolve symbols with longer names.
+
+ *Richard Levitte*
+
* Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
The presence of this system service is determined at run-time.
*/
/*
- * This file is only used by HP C on VMS, and is included automatically
+ * This file is only used by HP C/C++ on VMS, and is included automatically
* after each header file from this directory
*/
+/*
+ * The C++ compiler doesn't understand these pragmas, even though it
+ * understands the corresponding command line qualifier.
+ */
+#ifndef __cplusplus
/* restore state. Must correspond to the save in __decc_include_prologue.h */
-#pragma names restore
+# pragma names restore
+#endif
*/
/*
- * This file is only used by HP C on VMS, and is included automatically
+ * This file is only used by HP C/C++ on VMS, and is included automatically
* after each header file from this directory
*/
+/*
+ * The C++ compiler doesn't understand these pragmas, even though it
+ * understands the corresponding command line qualifier.
+ */
+#ifndef __cplusplus
/* save state */
-#pragma names save
+# pragma names save
/* have the compiler shorten symbols larger than 31 chars to 23 chars
* followed by a 8 hex char CRC
*/
-#pragma names as_is,shortened
+# pragma names as_is,shortened
+#endif