summaryrefslogtreecommitdiffstats
path: root/grpc-gcc14.patch
blob: 1d7334825f5815bcaa0633d661d5e3c7d34091c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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