All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] i386, x86_64, ppc: fix switch fallthrough cases with GCC7
@ 2017-03-31 16:40 Andrei Borzenkov
  2017-04-03  9:00 ` Vladimir 'phcoder' Serbinenko
  0 siblings, 1 reply; 2+ messages in thread
From: Andrei Borzenkov @ 2017-03-31 16:40 UTC (permalink / raw)
  To: grub-devel

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)


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] i386, x86_64, ppc: fix switch fallthrough cases with GCC7
  2017-03-31 16:40 [PATCH] i386, x86_64, ppc: fix switch fallthrough cases with GCC7 Andrei Borzenkov
@ 2017-04-03  9:00 ` Vladimir 'phcoder' Serbinenko
  0 siblings, 0 replies; 2+ messages in thread
From: Vladimir 'phcoder' Serbinenko @ 2017-04-03  9:00 UTC (permalink / raw)
  To: The development of GNU GRUB

[-- Attachment #1: Type: text/plain, Size: 12684 bytes --]

Go ahead

On Fri, Mar 31, 2017, 06:41 Andrei Borzenkov <arvidjaar@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
>

[-- Attachment #2: Type: text/html, Size: 21224 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-04-03  9:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-31 16:40 [PATCH] i386, x86_64, ppc: fix switch fallthrough cases with GCC7 Andrei Borzenkov
2017-04-03  9:00 ` Vladimir 'phcoder' Serbinenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.