fiat: only use asm variants of P256 symbols if they're actually declared.

In the previous revert at b11b2c5a7f9c0e70139870114c95fcf93e65dfa3, this
got messed up.

Change-Id: I1ecd447046eb52934c91c370a86d964a6a6a6964
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/97707
Commit-Queue: Rudolf Polzer <rpolzer@google.com>
Presubmit-BoringSSL-Verified: boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Xiangfei Ding <xfding@google.com>
diff --git a/third_party/fiat/p256_64.h b/third_party/fiat/p256_64.h
index a14d60b..31f317b 100644
--- a/third_party/fiat/p256_64.h
+++ b/third_party/fiat/p256_64.h
@@ -186,7 +186,8 @@
  */
 static FIAT_P256_FIAT_INLINE void fiat_p256_mul(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) {
   // NOTE: edited by hand, see third_party/fiat/README.md
-#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) && defined(__x86_64__)
+#if !defined(OPENSSL_NO_ASM) && (defined(__ELF__) || defined(__APPLE__)) && \
+    defined(OPENSSL_X86_64) && !defined(OPENSSL_NANOLIBC)
   if (bssl::CRYPTO_is_BMI1_capable() && bssl::CRYPTO_is_BMI2_capable() &&
       bssl::CRYPTO_is_ADX_capable()) {
     fiat_p256_adx_mul(out1, arg1, arg2);
@@ -501,7 +502,8 @@
  */
 static FIAT_P256_FIAT_INLINE void fiat_p256_square(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) {
   // NOTE: edited by hand, see third_party/fiat/README.md
-#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) && defined(__x86_64__)
+#if !defined(OPENSSL_NO_ASM) && (defined(__ELF__) || defined(__APPLE__)) && \
+    defined(OPENSSL_X86_64) && !defined(OPENSSL_NANOLIBC)
   if (bssl::CRYPTO_is_BMI1_capable() && bssl::CRYPTO_is_BMI2_capable() &&
       bssl::CRYPTO_is_ADX_capable()) {
     fiat_p256_adx_sqr(out1, arg1);