summaryrefslogtreecommitdiffstats
path: root/grpc-gcc14.patch
diff options
context:
space:
mode:
Diffstat (limited to 'grpc-gcc14.patch')
-rw-r--r--grpc-gcc14.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/grpc-gcc14.patch b/grpc-gcc14.patch
new file mode 100644
index 0000000..1d73348
--- /dev/null
+++ b/grpc-gcc14.patch
@@ -0,0 +1,44 @@
+From c70190368c7040c37c1d655f0690bcde2b109a0d Mon Sep 17 00:00:00 2001
+From: David Benjamin <davidben@google.com>
+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 <davidben@google.com>
+Commit-Queue: David Benjamin <davidben@google.com>
+Reviewed-by: Adam Langley <agl@google.com>
+---
+ 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
+