external/boringssl: Sync to 2c45fa0b90f61b27973fa81893e014fc8c8e8999.

This includes the following changes:

https://boringssl.googlesource.com/boringssl/+log/faa539f877432814d0f2de19846eb99f2ea1e207..2c45fa0b90f61b27973fa81893e014fc8c8e8999

Test: BoringSSL CTS Presubmits
Change-Id: Ie6dc40e0c979168ec73fa1165cbc6e6b83793439
diff --git a/src/crypto/crypto.c b/src/crypto/crypto.c
index c32f514..5d35289 100644
--- a/src/crypto/crypto.c
+++ b/src/crypto/crypto.c
@@ -49,6 +49,7 @@
  * far, the init constructor function only sets the capability variables. */
 
 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
+
 /* This value must be explicitly initialised to zero in order to work around a
  * bug in libtool or the linker on OS X.
  *
@@ -57,6 +58,14 @@
  * initialising it to zero, it becomes a "data symbol", which isn't so
  * affected. */
 uint32_t OPENSSL_ia32cap_P[4] = {0};
+#if !defined(BORINGSSL_FIPS)
+uint32_t *OPENSSL_ia32cap_addr = OPENSSL_ia32cap_P;
+#endif
+
+#elif defined(OPENSSL_PPC64LE)
+
+unsigned long OPENSSL_ppc64le_hwcap2 = 0;
+
 #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
 
 #include <openssl/arm_arch.h>
@@ -87,6 +96,11 @@
 
 #endif
 
+#if defined(BORINGSSL_FIPS)
+/* In FIPS mode, the power-on self-test function calls |CRYPTO_library_init|
+ * because we have to ensure that CPUID detection occurs first. */
+#define BORINGSSL_NO_STATIC_INITIALIZER
+#endif
 
 #if defined(OPENSSL_WINDOWS) && !defined(BORINGSSL_NO_STATIC_INITIALIZER)
 #define OPENSSL_CDECL __cdecl
@@ -160,5 +174,3 @@
 }
 
 void OPENSSL_load_builtin_modules(void) {}
-
-int FIPS_mode(void) { return 0; }