From 9ced9a620213d74dc0d82948bd836238927e2816 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 28 Apr 2022 06:56:56 +1000 Subject: [PATCH] Define local instances of FALLTHROUGH and UNREACHABLE FALLTHOUGH is a copy of how it is defined in UNREACHABLE follows the model used in MacOS /usr/include/c++/v1/cstdlib to determine if __builtin_ureachable is available (cherry picked from commit 6d68a22954e6101f817dfbe9bc17d2e2a7782744) --- contrib/dlz/modules/include/dlz_minimal.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/contrib/dlz/modules/include/dlz_minimal.h b/contrib/dlz/modules/include/dlz_minimal.h index 24ef250059..4f77dbba45 100644 --- a/contrib/dlz/modules/include/dlz_minimal.h +++ b/contrib/dlz/modules/include/dlz_minimal.h @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -85,6 +86,24 @@ typedef uint32_t dns_ttl_t; var = _u.v; \ } while (0) +#if !defined(__has_attribute) +#define __has_attribute(x) 0 +#endif /* if !defined(__has_attribute) */ + +#if __GNUC__ >= 7 || __has_attribute(fallthrough) +#define FALLTHROUGH __attribute__((fallthrough)) +#else +/* clang-format off */ +#define FALLTHROUGH do {} while (0) /* FALLTHROUGH */ +/* clang-format on */ +#endif + +#ifdef __GNUC__ +#define UNREACHABLE() __builtin_unreachable() +#else +#define UNREACHABLE() abort() +#endif + /* opaque structures */ typedef void *dns_sdlzlookup_t; typedef void *dns_sdlzallnodes_t;