Index: nss/lib/util/verref.h |
diff --git a/nss/lib/util/verref.h b/nss/lib/util/verref.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d141bb5ca7cd0c0aa3b6e77f5066e3b51ca848b |
--- /dev/null |
+++ b/nss/lib/util/verref.h |
@@ -0,0 +1,40 @@ |
+/* This Source Code Form is subject to the terms of the Mozilla Public |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
+ |
+/* This header is used inline in a function to ensure that a version string |
+ * symbol is linked in and not optimized out. A volatile reference is added to |
+ * the variable identified by NSS_VERSION_VARIABLE. |
+ * |
+ * Use this as follows: |
+ * |
+ * #define NSS_VERSION_VARIABLE __nss_ssl_version |
+ * #include "verref.h" |
+ */ |
+ |
+/* Suppress unused variable warnings. */ |
+#ifdef _MSC_VER |
+#pragma warning(push) |
+#pragma warning(disable: 4101) |
+#endif |
+/* This works for both gcc and clang */ |
+#if defined(__GNUC__) && !defined(NSS_NO_GCC48) |
+#pragma GCC diagnostic push |
+#pragma GCC diagnostic ignored "-Wunused-variable" |
+#endif |
+ |
+#ifndef NSS_VERSION_VARIABLE |
+#error NSS_VERSION_VARIABLE must be set before including "verref.h" |
+#endif |
+{ |
+ extern const char NSS_VERSION_VARIABLE[]; |
+ volatile const char _nss_version_c = NSS_VERSION_VARIABLE[0]; |
+} |
+#undef NSS_VERSION_VARIABLE |
+ |
+#ifdef _MSC_VER |
+#pragma warning(pop) |
+#endif |
+#if defined(__GNUC__) && !defined(NSS_NO_GCC48) |
+#pragma GCC diagnostic pop |
+#endif |