| Backport boringssl patches to fix clang fall through warnings. |
| https://boringssl-review.googlesource.com/c/boringssl/+/37244 |
| https://boringssl-review.googlesource.com/c/boringssl/+/37247 |
| |
| Author: Manoj Gupta <manojgupta@google.com> |
| Date: Mon Aug 26 09:13:58 2019 -0700 |
| |
| Add Fallthru support for clang 10. |
| |
| clang has gained supoprted for __attribute__ ((fallthrough)) |
| in https://reviews.llvm.org/rL369414. |
| Detect the support in clang and enable it as OPENSSL_FALLTHROUGH. |
| This is needed to fix ToT clang builds. |
| |
| Bug: chromium:997709 |
| Test: CQ |
| Change-Id: Iefa17687f6b5e8c95f359f167e9049d9a69c5302 |
| |
| diff --git a/crypto/internal.h b/crypto/internal.h |
| index 52799e899..92f5313f1 100644 |
| --- a/crypto/internal.h |
| +++ b/crypto/internal.h |
| @@ -187,6 +187,12 @@ typedef __uint128_t uint128_t; |
| #define OPENSSL_FALLTHROUGH [[gnu::fallthrough]] |
| #elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 |
| #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
| +#elif defined(__clang__) |
| +#if __has_attribute(fallthrough) |
| +#define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) |
| +#else // clang versions that do not support fallthrough. |
| +#define OPENSSL_FALLTHROUGH |
| +#endif |
| #else // C++11 on gcc 6, and all other cases |
| #define OPENSSL_FALLTHROUGH |
| #endif |
| diff --git a/crypto/asn1/tasn_enc.c b/crypto/asn1/tasn_enc.c |
| index d89ec8a73..3722a5191 100644 |
| --- a/crypto/asn1/tasn_enc.c |
| +++ b/crypto/asn1/tasn_enc.c |
| @@ -192,7 +192,7 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, |
| /* Use indefinite length constructed if requested */ |
| if (aclass & ASN1_TFLG_NDEF) |
| ndef = 2; |
| - /* fall through */ |
| + OPENSSL_FALLTHROUGH; |
| |
| case ASN1_ITYPE_SEQUENCE: |
| i = asn1_enc_restore(&seqcontlen, out, pval, it); |
| diff --git a/crypto/fipsmodule/cipher/cipher.c b/crypto/fipsmodule/cipher/cipher.c |
| index 39e038beb..d0682ab37 100644 |
| --- a/crypto/fipsmodule/cipher/cipher.c |
| +++ b/crypto/fipsmodule/cipher/cipher.c |
| @@ -191,7 +191,7 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, |
| |
| case EVP_CIPH_CFB_MODE: |
| ctx->num = 0; |
| - // fall-through |
| + OPENSSL_FALLTHROUGH; |
| |
| case EVP_CIPH_CBC_MODE: |
| assert(EVP_CIPHER_CTX_iv_length(ctx) <= sizeof(ctx->iv)); |
| |