Go ahead On Fri, Mar 31, 2017, 06:41 Andrei Borzenkov <arvidj...@gmail.com> wrote:
> In util/getroot and efidisk slightly modify exitsing comment to mostly > retain it but still make GCC7 compliant with respect to fall through > annotation. > > In grub-core/lib/xzembed/xz_dec_lzma2.c it adds same comments as > upstream. > > In grub-core/tests/setjmp_tets.c declare functions as "noreturn" to > suppress GCC7 warning. > > In grub-core/gnulib/regexec.c use new __attribute__, because existing > annotation is not recognized by GCC7 parser (which requires that comment > immediately precedes case statement). > > Otherwise add FALLTHROUGH comment. > > Closes: 50598 > > --- > grub-core/commands/hdparm.c | 1 + > grub-core/commands/nativedisk.c | 1 + > grub-core/disk/cryptodisk.c | 1 + > grub-core/disk/efi/efidisk.c | 2 +- > grub-core/efiemu/mm.c | 1 + > grub-core/gdb/cstub.c | 1 + > grub-core/gnulib/regexec.c | 3 +++ > grub-core/lib/xzembed/xz_dec_lzma2.c | 4 ++++ > grub-core/lib/xzembed/xz_dec_stream.c | 6 ++++++ > grub-core/loader/i386/linux.c | 3 +++ > grub-core/tests/setjmp_test.c | 5 ++++- > grub-core/video/ieee1275.c | 1 + > grub-core/video/readers/jpeg.c | 1 + > util/getroot.c | 2 +- > util/grub-install.c | 1 + > util/grub-mkimagexx.c | 1 + > util/grub-mount.c | 1 + > 17 files changed, 32 insertions(+), 3 deletions(-) > > diff --git a/grub-core/commands/hdparm.c b/grub-core/commands/hdparm.c > index f6b178e..d3fa966 100644 > --- a/grub-core/commands/hdparm.c > +++ b/grub-core/commands/hdparm.c > @@ -328,6 +328,7 @@ grub_cmd_hdparm (grub_extcmd_context_t ctxt, int argc, > char **args) > ata = ((struct grub_scsi *) disk->data)->data; > break; > } > + /* FALLTHROUGH */ > default: > grub_disk_close (disk); > return grub_error (GRUB_ERR_IO, "not an ATA device"); > diff --git a/grub-core/commands/nativedisk.c > b/grub-core/commands/nativedisk.c > index 345f97c..2f56a87 100644 > --- a/grub-core/commands/nativedisk.c > +++ b/grub-core/commands/nativedisk.c > @@ -79,6 +79,7 @@ get_uuid (const char *name, char **uuid, int getnative) > case GRUB_DISK_DEVICE_XEN: > if (getnative) > break; > + /* FALLTHROUGH */ > > /* Virtual disks. */ > /* GRUB dynamically generated files. */ > diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c > index 1e03a09..bd60a66 100644 > --- a/grub-core/disk/cryptodisk.c > +++ b/grub-core/disk/cryptodisk.c > @@ -282,6 +282,7 @@ grub_cryptodisk_endecrypt (struct grub_cryptodisk *dev, > break; > case GRUB_CRYPTODISK_MODE_IV_PLAIN64: > iv[1] = grub_cpu_to_le32 (sector >> 32); > + /* FALLTHROUGH */ > case GRUB_CRYPTODISK_MODE_IV_PLAIN: > iv[0] = grub_cpu_to_le32 (sector & 0xFFFFFFFF); > break; > diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c > index e66b35d..5d2400f 100644 > --- a/grub-core/disk/efi/efidisk.c > +++ b/grub-core/disk/efi/efidisk.c > @@ -224,7 +224,7 @@ name_devices (struct grub_efidisk_data *devices) > { > case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE: > is_hard_drive = 1; > - /* Fall through by intention. */ > + /* Intentionally fall through. */ > case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE: > { > struct grub_efidisk_data *parent, *parent2; > diff --git a/grub-core/efiemu/mm.c b/grub-core/efiemu/mm.c > index e606dbf..52a032f 100644 > --- a/grub-core/efiemu/mm.c > +++ b/grub-core/efiemu/mm.c > @@ -417,6 +417,7 @@ fill_hook (grub_uint64_t addr, grub_uint64_t size, > grub_memory_type_t type, > default: > grub_dprintf ("efiemu", > "Unknown memory type %d. Assuming unusable\n", type); > + /* FALLTHROUGH */ > case GRUB_MEMORY_RESERVED: > return grub_efiemu_add_to_mmap (addr, size, > GRUB_EFI_UNUSABLE_MEMORY); > diff --git a/grub-core/gdb/cstub.c b/grub-core/gdb/cstub.c > index c94411b..b64acd7 100644 > --- a/grub-core/gdb/cstub.c > +++ b/grub-core/gdb/cstub.c > @@ -336,6 +336,7 @@ grub_gdb_trap (int trap_no) > /* sAA..AA: Step one instruction from AA..AA(optional). */ > case 's': > stepping = 1; > + /* FALLTHROUGH */ > > /* cAA..AA: Continue at address AA..AA(optional). */ > case 'c': > diff --git a/grub-core/gnulib/regexec.c b/grub-core/gnulib/regexec.c > index f632cd4..a7776f0 100644 > --- a/grub-core/gnulib/regexec.c > +++ b/grub-core/gnulib/regexec.c > @@ -4099,6 +4099,9 @@ check_node_accept (const re_match_context_t *mctx, > const re_token_t *node, > case OP_UTF8_PERIOD: > if (ch >= ASCII_CHARS) > return false; > +#if defined __GNUC__ && __GNUC__ >= 7 > + __attribute__ ((fallthrough)); > +#endif > /* FALLTHROUGH */ > #endif > case OP_PERIOD: > diff --git a/grub-core/lib/xzembed/xz_dec_lzma2.c > b/grub-core/lib/xzembed/xz_dec_lzma2.c > index 8a2a118..af7b770 100644 > --- a/grub-core/lib/xzembed/xz_dec_lzma2.c > +++ b/grub-core/lib/xzembed/xz_dec_lzma2.c > @@ -1044,6 +1044,8 @@ enum xz_ret xz_dec_lzma2_run( > > s->lzma2.sequence = SEQ_LZMA_PREPARE; > > + /* Fall through */ > + > case SEQ_LZMA_PREPARE: > if (s->lzma2.compressed < RC_INIT_BYTES) > return XZ_DATA_ERROR; > @@ -1054,6 +1056,8 @@ enum xz_ret xz_dec_lzma2_run( > s->lzma2.compressed -= RC_INIT_BYTES; > s->lzma2.sequence = SEQ_LZMA_RUN; > > + /* Fall through */ > + > case SEQ_LZMA_RUN: > /* > * Set dictionary limit to indicate how much we > want > diff --git a/grub-core/lib/xzembed/xz_dec_stream.c > b/grub-core/lib/xzembed/xz_dec_stream.c > index c16b130..a29751e 100644 > --- a/grub-core/lib/xzembed/xz_dec_stream.c > +++ b/grub-core/lib/xzembed/xz_dec_stream.c > @@ -750,6 +750,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > > s->sequence = SEQ_BLOCK_START; > > + /* FALLTHROUGH */ > case SEQ_BLOCK_START: > /* We need one byte of input to continue. */ > if (b->in_pos == b->in_size) > @@ -773,6 +774,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > s->temp.pos = 0; > s->sequence = SEQ_BLOCK_HEADER; > > + /* FALLTHROUGH */ > case SEQ_BLOCK_HEADER: > if (!fill_temp(s, b)) > return XZ_OK; > @@ -783,6 +785,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > > s->sequence = SEQ_BLOCK_UNCOMPRESS; > > + /* FALLTHROUGH */ > case SEQ_BLOCK_UNCOMPRESS: > ret = dec_block(s, b); > if (ret != XZ_STREAM_END) > @@ -810,6 +813,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > > s->sequence = SEQ_BLOCK_CHECK; > > + /* FALLTHROUGH */ > case SEQ_BLOCK_CHECK: > ret = hash_validate(s, b, 0); > if (ret != XZ_STREAM_END) > @@ -858,6 +862,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > > s->sequence = SEQ_INDEX_CRC32; > > + /* FALLTHROUGH */ > case SEQ_INDEX_CRC32: > ret = hash_validate(s, b, 1); > if (ret != XZ_STREAM_END) > @@ -866,6 +871,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct > xz_buf *b) > s->temp.size = STREAM_HEADER_SIZE; > s->sequence = SEQ_STREAM_FOOTER; > > + /* FALLTHROUGH */ > case SEQ_STREAM_FOOTER: > if (!fill_temp(s, b)) > return XZ_OK; > diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c > index b15b8cc..083f941 100644 > --- a/grub-core/loader/i386/linux.c > +++ b/grub-core/loader/i386/linux.c > @@ -984,10 +984,13 @@ grub_cmd_linux (grub_command_t cmd __attribute__ > ((unused)), > { > case 'g': > shift += 10; > + /* FALLTHROUGH */ > case 'm': > shift += 10; > + /* FALLTHROUGH */ > case 'k': > shift += 10; > + /* FALLTHROUGH */ > default: > break; > } > diff --git a/grub-core/tests/setjmp_test.c b/grub-core/tests/setjmp_test.c > index 390cb26..604a6ce 100644 > --- a/grub-core/tests/setjmp_test.c > +++ b/grub-core/tests/setjmp_test.c > @@ -25,7 +25,10 @@ GRUB_MOD_LICENSE ("GPLv3+"); > static grub_jmp_buf jmp_point; > static int expected, ctr; > > -#pragma GCC diagnostic ignored "-Wmissing-noreturn" > +/* This fixes GCC7 "unintentional fallthrough" warning */ > +static void jmp0 (void) __attribute__ ((noreturn)); > +static void jmp1 (void) __attribute__ ((noreturn)); > +static void jmp2 (void) __attribute__ ((noreturn)); > > static void > jmp0 (void) > diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c > index 0b150ec..17a3dbb 100644 > --- a/grub-core/video/ieee1275.c > +++ b/grub-core/video/ieee1275.c > @@ -181,6 +181,7 @@ grub_video_ieee1275_fill_mode_info > (grub_ieee1275_phandle_t dev, > case 32: > out->reserved_mask_size = 8; > out->reserved_field_pos = 24; > + /* FALLTHROUGH */ > > case 24: > out->red_mask_size = 8; > diff --git a/grub-core/video/readers/jpeg.c > b/grub-core/video/readers/jpeg.c > index c3e0df2..21b0d9d 100644 > --- a/grub-core/video/readers/jpeg.c > +++ b/grub-core/video/readers/jpeg.c > @@ -736,6 +736,7 @@ grub_jpeg_decode_jpeg (struct grub_jpeg_data *data) > case JPEG_MARKER_SOS: /* Start Of Scan. */ > if (grub_jpeg_decode_sos (data)) > break; > + /* FALLTHROUGH */ > case JPEG_MARKER_RST0: /* Restart. */ > case JPEG_MARKER_RST1: > case JPEG_MARKER_RST2: > diff --git a/util/getroot.c b/util/getroot.c > index 92c0d70..847406f 100644 > --- a/util/getroot.c > +++ b/util/getroot.c > @@ -99,7 +99,7 @@ grub_util_pull_device (const char *os_dev) > { > case GRUB_DEV_ABSTRACTION_LVM: > grub_util_pull_lvm_by_command (os_dev); > - /* Fallthrough in case that lvm-tools are unavailable. */ > + /* Fallthrough - in case that lvm-tools are unavailable. */ > case GRUB_DEV_ABSTRACTION_LUKS: > grub_util_pull_devmapper (os_dev); > return; > diff --git a/util/grub-install.c b/util/grub-install.c > index 6c89c2b..9074d3e 100644 > --- a/util/grub-install.c > +++ b/util/grub-install.c > @@ -1851,6 +1851,7 @@ main (int argc, char *argv[]) > free (mach_kernel); > break; > } > + /* FALLTHROUGH */ > case GRUB_INSTALL_PLATFORM_ARM_EFI: > case GRUB_INSTALL_PLATFORM_ARM64_EFI: > case GRUB_INSTALL_PLATFORM_IA64_EFI: > diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c > index f8faae8..e63f148 100644 > --- a/util/grub-mkimagexx.c > +++ b/util/grub-mkimagexx.c > @@ -907,6 +907,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr > *sections, > > + sym->st_value > > - image_target->vaddr_offset)); > } > + /* FALLTHROUGH */ > case R_IA64_LTOFF_FPTR22: > *gpptr = grub_host_to_target64 (addend + sym_addr); > grub_ia64_add_value_to_slot_21 ((grub_addr_t) target, > diff --git a/util/grub-mount.c b/util/grub-mount.c > index aca5f82..a25db8a 100644 > --- a/util/grub-mount.c > +++ b/util/grub-mount.c > @@ -530,6 +530,7 @@ argp_parser (int key, char *arg, struct argp_state > *state) > if (arg[0] != '-') > break; > > + /* FALLTHROUGH */ > default: > if (!arg) > return 0; > -- > tg: (8014b7b..) bug/50598 (depends on: master) > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel