Move OPENSSL_FALLTHROUGH to internal headers. Having it in base.h pollutes the global namespace a bit and, in particular, causes clang to give unhelpful suggestions in consuming projects. Change-Id: I6ca1a88bdd1701f0c49192a0df56ac0953c7067c Reviewed-on: https://boringssl-review.googlesource.com/25464 Commit-Queue: Steven Valdez <svaldez@google.com> Reviewed-by: Steven Valdez <svaldez@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/crypto/bio/fd.c b/crypto/bio/fd.c index ea5bfd8..fed5228 100644 --- a/crypto/bio/fd.c +++ b/crypto/bio/fd.c
@@ -73,6 +73,7 @@ #include <openssl/mem.h> #include "internal.h" +#include "../internal.h" static int bio_fd_non_fatal_error(int err) {
diff --git a/crypto/bio/file.c b/crypto/bio/file.c index 278be18..f61dbe4 100644 --- a/crypto/bio/file.c +++ b/crypto/bio/file.c
@@ -81,6 +81,8 @@ #include <openssl/err.h> #include <openssl/mem.h> +#include "../internal.h" + #define BIO_FP_READ 0x02 #define BIO_FP_WRITE 0x04
diff --git a/crypto/cipher_extra/e_rc2.c b/crypto/cipher_extra/e_rc2.c index 0b2caf5..221a9c9 100644 --- a/crypto/cipher_extra/e_rc2.c +++ b/crypto/cipher_extra/e_rc2.c
@@ -57,6 +57,8 @@ #include <openssl/cipher.h> #include <openssl/nid.h> +#include "../internal.h" + #define c2l(c, l) \ do { \
diff --git a/crypto/fipsmodule/des/internal.h b/crypto/fipsmodule/des/internal.h index 4d65ff1..1ae3f22 100644 --- a/crypto/fipsmodule/des/internal.h +++ b/crypto/fipsmodule/des/internal.h
@@ -59,6 +59,8 @@ #include <openssl/base.h> +#include "../../internal.h" + #if defined(__cplusplus) extern "C" { #endif
diff --git a/crypto/internal.h b/crypto/internal.h index 95b8d28..067f3bb 100644 --- a/crypto/internal.h +++ b/crypto/internal.h
@@ -172,6 +172,20 @@ #define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) +// Have a generic fall-through for different versions of C/C++. +#if defined(__cplusplus) && __cplusplus >= 201703L +#define OPENSSL_FALLTHROUGH [[fallthrough]] +#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__) +#define OPENSSL_FALLTHROUGH [[clang::fallthrough]] +#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \ + __GNUC__ >= 7 +#define OPENSSL_FALLTHROUGH [[gnu::fallthrough]] +#elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 +#define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) +#else // C++11 on gcc 6, and all other cases +#define OPENSSL_FALLTHROUGH +#endif + // buffers_alias returns one if |a| and |b| alias and zero otherwise. static inline int buffers_alias(const uint8_t *a, size_t a_len, const uint8_t *b, size_t b_len) {
diff --git a/decrepit/macros.h b/decrepit/macros.h index c4ebeec..7888f0d 100644 --- a/decrepit/macros.h +++ b/decrepit/macros.h
@@ -57,6 +57,8 @@ #ifndef OPENSSL_HEADER_DECREPIT_MACROS_H #define OPENSSL_HEADER_DECREPIT_MACROS_H +#include "../crypto/internal.h" + // NOTE - c is not incremented as per n2l #define n2ln(c, l1, l2, n) \
diff --git a/include/openssl/base.h b/include/openssl/base.h index dea069a..8db72d8 100644 --- a/include/openssl/base.h +++ b/include/openssl/base.h
@@ -223,20 +223,6 @@ #endif #endif -// Have a generic fall-through for different versions of C/C++. -#if defined(__cplusplus) && __cplusplus >= 201703L -#define OPENSSL_FALLTHROUGH [[fallthrough]] -#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__) -#define OPENSSL_FALLTHROUGH [[clang::fallthrough]] -#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \ - __GNUC__ >= 7 -#define OPENSSL_FALLTHROUGH [[gnu::fallthrough]] -#elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 -#define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough)) -#else // C++11 on gcc 6, and all other cases -#define OPENSSL_FALLTHROUGH -#endif - // CRYPTO_THREADID is a dummy value. typedef int CRYPTO_THREADID;