From c70190368c7040c37c1d655f0690bcde2b109a0d Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Thu, 16 May 2024 11:00:42 -0400 Subject: [PATCH 1/3] Don't define CRYPTO_addc_* and CRYPTO_subc_* in C++ GCC does not support C11 _Generic in C++ mode. Change-Id: I974a0b04bbe4900419736044d0d8050f2b856d56 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/68507 Auto-Submit: David Benjamin Commit-Queue: David Benjamin Reviewed-by: Adam Langley --- crypto/internal.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crypto/internal.h b/crypto/internal.h index a77102d76..a45f97bcc 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -1174,6 +1174,11 @@ static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) { // Arithmetic functions. +// The most efficient versions of these functions on GCC and Clang depend on C11 +// |_Generic|. If we ever need to call these from C++, we'll need to add a +// variant that uses C++ overloads instead. +#if !defined(__cplusplus) + // CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry // bit. |carry| must be zero or one. #if OPENSSL_HAS_BUILTIN(__builtin_addc) @@ -1275,6 +1280,8 @@ static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow, #define CRYPTO_subc_w CRYPTO_subc_u32 #endif +#endif // !__cplusplus + // FIPS functions. -- 2.45.0