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 | |
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>
-rw-r--r-- | firmware/2lib/include/2common.h | 21 | ||||
-rw-r--r-- | firmware/lib/cgptlib/cgptlib.c | 2 | ||||
-rw-r--r-- | firmware/lib/vboot_ui.c | 4 | ||||
-rw-r--r-- | futility/cmd_dump_fmap.c | 4 | ||||
-rw-r--r-- | futility/cmd_sign.c | 2 | ||||
-rw-r--r-- | host/lib/crossystem.c | 2 |
6 files changed, 28 insertions, 7 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 * diff --git a/firmware/lib/cgptlib/cgptlib.c b/firmware/lib/cgptlib/cgptlib.c index db704b54..7803a7e9 100644 --- a/firmware/lib/cgptlib/cgptlib.c +++ b/firmware/lib/cgptlib/cgptlib.c @@ -143,8 +143,8 @@ int GptUpdateKernelWithEntry(GptData *gpt, GptEntry *e, uint32_t update_type) break; } /* Out of tries, so drop through and mark partition bad. */ - __attribute__ ((fallthrough)); } + VBOOT_FALLTHROUGH; case GPT_UPDATE_ENTRY_BAD: { /* Giving up on this partition entirely. */ if (!GetEntrySuccessful(e)) { diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c index ac509430..c8ef8cdc 100644 --- a/firmware/lib/vboot_ui.c +++ b/firmware/lib/vboot_ui.c @@ -258,7 +258,7 @@ static vb2_error_t vb2_enter_vendor_data_ui(struct vb2_context *ctx, return VB2_SUCCESS; case 'a'...'z': key = toupper(key); - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; case '0'...'9': case 'A'...'Z': if ((len > 0 && is_vowel(key)) || @@ -594,7 +594,7 @@ static vb2_error_t vb2_developer_ui(struct vb2_context *ctx) /* Only disable virtual dev switch if allowed by GBB */ if (!(gbb->flags & VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM)) break; - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; case ' ': /* See if we should disable virtual dev-mode switch. */ VB2_DEBUG("shared->flags=%#x\n", shared->flags); diff --git a/futility/cmd_dump_fmap.c b/futility/cmd_dump_fmap.c index 48f9185c..ef46ffcd 100644 --- a/futility/cmd_dump_fmap.c +++ b/futility/cmd_dump_fmap.c @@ -444,7 +444,7 @@ static int do_dump_fmap(int argc, char *argv[]) break; case 'H': opt_gaps = 1; - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; case 'h': opt_format = FMT_HUMAN; opt_overlap++; @@ -507,7 +507,7 @@ static int do_dump_fmap(int argc, char *argv[]) case FMT_NORMAL: printf("hit at 0x%08x\n", (uint32_t) ((char *)fmap - (char *)base_of_rom)); - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; default: retval = normal_fmap(fmap, argc - optind - 1, diff --git a/futility/cmd_sign.c b/futility/cmd_sign.c index 9bfba4f8..fb096763 100644 --- a/futility/cmd_sign.c +++ b/futility/cmd_sign.c @@ -721,7 +721,7 @@ static int do_sign(int argc, char *argv[]) break; case OPT_FV: sign_option.fv_specified = 1; - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; case OPT_INFILE: sign_option.inout_file_count++; infile = optarg; diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index 1bad2cfb..3a418939 100644 --- a/host/lib/crossystem.c +++ b/host/lib/crossystem.c @@ -409,7 +409,7 @@ static int GetVdatInt(VdatIntField field) break; case VDAT_INT_FW_BOOT2: value = (sh->flags & VBSD_BOOT_FIRMWARE_VBOOT2 ? 1 : 0); - __attribute__ ((fallthrough)); + VBOOT_FALLTHROUGH; default: break; } |