diff options
author | Mathew King <mathewk@chromium.org> | 2019-11-05 22:21:33 +0000 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2019-11-05 22:45:39 +0000 |
commit | ed8390ec50b2decdf18a3416d07d37222cb0130d (patch) | |
tree | ae4392e8113ae1c0950c186979754082737a44de /firmware/2lib/include/2common.h | |
parent | 6a703f5b0edfdbf2eee72d59499f73585262a46f (diff) | |
download | vboot-ed8390ec50b2decdf18a3416d07d37222cb0130d.tar.gz |
Revert "Clean up implicit fall through."
This reverts commit 6a703f5b0edfdbf2eee72d59499f73585262a46f.
Reason for revert: This change breaks building coreboot
Original change's description:
> Clean up implicit fall through.
>
> Directly use the __attribute__ ((fallthrough)) instead of
> a macro.
> This was suggested in CL:1772474.
>
> BUG=chromium:997709
> TEST=CQ
> BRANCH=None
>
> Change-Id: Ic6cd417d7c735395a4b136dbb0879a6f1716da98
> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1897360
> Tested-by: Manoj Gupta <manojgupta@chromium.org>
> Reviewed-by: Julius Werner <jwerner@chromium.org>
> Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
Bug: chromium:997709
Change-Id: Icd0de8bcdee44d1b41f313a4f5aaba8108f734ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1899735
Reviewed-by: Mathew King <mathewk@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Julius Werner <jwerner@chromium.org>
Tested-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'firmware/2lib/include/2common.h')
-rw-r--r-- | firmware/2lib/include/2common.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/firmware/2lib/include/2common.h b/firmware/2lib/include/2common.h index b4e941c5..6c5563a6 100644 --- a/firmware/2lib/include/2common.h +++ b/firmware/2lib/include/2common.h @@ -71,6 +71,27 @@ struct vb2_public_key; #endif #endif +// Have a generic fall-through for different versions of C/C++. +// Taken from boringssl. +#if defined(__cplusplus) && __cplusplus >= 201703L +#define VBOOT_FALLTHROUGH [[fallthrough]] +#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__) +#define VBOOT_FALLTHROUGH [[clang::fallthrough]] +#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \ + __GNUC__ >= 7 +#define VBOOT_FALLTHROUGH [[gnu::fallthrough]] +#elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7 +#define VBOOT_FALLTHROUGH __attribute__ ((fallthrough)) +#elif defined(__clang__) +#if __has_attribute(fallthrough) +#define VBOOT_FALLTHROUGH __attribute__ ((fallthrough)) +#else // clang versions that do not support fallthrough. +#define VBOOT_FALLTHROUGH +#endif +#else // C++11 on gcc 6, and all other cases +#define VBOOT_FALLTHROUGH +#endif + /** * Round up a number to a multiple of VB2_WORKBUF_ALIGN * |