generic-poky/meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-sw...

249 lines
8.3 KiB
Diff

From 4bd4a88725604471fdbd86316c91967a7f4dba5a Mon Sep 17 00:00:00 2001
From: Andrei Borzenkov <arvidjaar@gmail.com>
Date: Tue, 4 Apr 2017 19:23:55 +0300
Subject: [PATCH 2/4] i386, x86_64, ppc: fix switch fallthrough cases with GCC7
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
---
Upstream-Status: Backport
Signed-off-by: Khem Raj <raj.khem@gmail.com>
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(-)
Index: grub-2.00/grub-core/commands/hdparm.c
===================================================================
--- grub-2.00.orig/grub-core/commands/hdparm.c
+++ grub-2.00/grub-core/commands/hdparm.c
@@ -328,6 +328,7 @@ grub_cmd_hdparm (grub_extcmd_context_t c
ata = ((struct grub_scsi *) disk->data)->data;
break;
}
+ /* FALLTHROUGH */
default:
return grub_error (GRUB_ERR_IO, "not an ATA device");
}
Index: grub-2.00/grub-core/disk/cryptodisk.c
===================================================================
--- grub-2.00.orig/grub-core/disk/cryptodisk.c
+++ grub-2.00/grub-core/disk/cryptodisk.c
@@ -268,6 +268,7 @@ grub_cryptodisk_endecrypt (struct grub_c
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;
Index: grub-2.00/grub-core/disk/efi/efidisk.c
===================================================================
--- grub-2.00.orig/grub-core/disk/efi/efidisk.c
+++ grub-2.00/grub-core/disk/efi/efidisk.c
@@ -262,7 +262,7 @@ name_devices (struct grub_efidisk_data *
{
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;
Index: grub-2.00/grub-core/efiemu/mm.c
===================================================================
--- grub-2.00.orig/grub-core/efiemu/mm.c
+++ grub-2.00/grub-core/efiemu/mm.c
@@ -410,6 +410,7 @@ grub_efiemu_mmap_fill (void)
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);
Index: grub-2.00/grub-core/gdb/cstub.c
===================================================================
--- grub-2.00.orig/grub-core/gdb/cstub.c
+++ grub-2.00/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':
Index: grub-2.00/grub-core/gnulib/regexec.c
===================================================================
--- grub-2.00.orig/grub-core/gnulib/regexec.c
+++ grub-2.00/grub-core/gnulib/regexec.c
@@ -4104,6 +4104,9 @@ check_node_accept (const re_match_contex
case OP_UTF8_PERIOD:
if (ch >= ASCII_CHARS)
return false;
+#if defined __GNUC__ && __GNUC__ >= 7
+ __attribute__ ((fallthrough));
+#endif
/* FALLTHROUGH */
#endif
case OP_PERIOD:
Index: grub-2.00/grub-core/lib/xzembed/xz_dec_lzma2.c
===================================================================
--- grub-2.00.orig/grub-core/lib/xzembed/xz_dec_lzma2.c
+++ grub-2.00/grub-core/lib/xzembed/xz_dec_lzma2.c
@@ -1042,6 +1042,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;
@@ -1052,6 +1054,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
Index: grub-2.00/grub-core/lib/xzembed/xz_dec_stream.c
===================================================================
--- grub-2.00.orig/grub-core/lib/xzembed/xz_dec_stream.c
+++ grub-2.00/grub-core/lib/xzembed/xz_dec_stream.c
@@ -749,6 +749,7 @@ static enum xz_ret dec_main(struct xz_de
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)
@@ -772,6 +773,7 @@ static enum xz_ret dec_main(struct xz_de
s->temp.pos = 0;
s->sequence = SEQ_BLOCK_HEADER;
+ /* FALLTHROUGH */
case SEQ_BLOCK_HEADER:
if (!fill_temp(s, b))
return XZ_OK;
@@ -782,6 +784,7 @@ static enum xz_ret dec_main(struct xz_de
s->sequence = SEQ_BLOCK_UNCOMPRESS;
+ /* FALLTHROUGH */
case SEQ_BLOCK_UNCOMPRESS:
ret = dec_block(s, b);
if (ret != XZ_STREAM_END)
@@ -809,6 +812,7 @@ static enum xz_ret dec_main(struct xz_de
s->sequence = SEQ_BLOCK_CHECK;
+ /* FALLTHROUGH */
case SEQ_BLOCK_CHECK:
ret = hash_validate(s, b, 0);
if (ret != XZ_STREAM_END)
@@ -863,6 +867,7 @@ static enum xz_ret dec_main(struct xz_de
s->sequence = SEQ_INDEX_CRC32;
+ /* FALLTHROUGH */
case SEQ_INDEX_CRC32:
ret = hash_validate(s, b, 1);
if (ret != XZ_STREAM_END)
@@ -871,6 +876,7 @@ static enum xz_ret dec_main(struct xz_de
s->temp.size = STREAM_HEADER_SIZE;
s->sequence = SEQ_STREAM_FOOTER;
+ /* FALLTHROUGH */
case SEQ_STREAM_FOOTER:
if (!fill_temp(s, b))
return XZ_OK;
Index: grub-2.00/grub-core/loader/i386/linux.c
===================================================================
--- grub-2.00.orig/grub-core/loader/i386/linux.c
+++ grub-2.00/grub-core/loader/i386/linux.c
@@ -977,10 +977,13 @@ grub_cmd_linux (grub_command_t cmd __att
{
case 'g':
shift += 10;
+ /* FALLTHROUGH */
case 'm':
shift += 10;
+ /* FALLTHROUGH */
case 'k':
shift += 10;
+ /* FALLTHROUGH */
default:
break;
}
Index: grub-2.00/grub-core/video/readers/jpeg.c
===================================================================
--- grub-2.00.orig/grub-core/video/readers/jpeg.c
+++ grub-2.00/grub-core/video/readers/jpeg.c
@@ -701,6 +701,7 @@ grub_jpeg_decode_jpeg (struct grub_jpeg_
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:
Index: grub-2.00/util/grub-mkimagexx.c
===================================================================
--- grub-2.00.orig/util/grub-mkimagexx.c
+++ grub-2.00/util/grub-mkimagexx.c
@@ -485,6 +485,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e
+ sym->st_value
- image_target->vaddr_offset));
}
+ /* FALLTHROUGH */
case R_IA64_LTOFF_FPTR22:
*gpptr = grub_host_to_target64 (addend + sym_addr);
add_value_to_slot_21 ((grub_addr_t) target,
Index: grub-2.00/util/grub-mount.c
===================================================================
--- grub-2.00.orig/util/grub-mount.c
+++ grub-2.00/util/grub-mount.c
@@ -487,6 +487,7 @@ argp_parser (int key, char *arg, struct
if (arg[0] != '-')
break;
+ /* FALLTHROUGH */
default:
if (!arg)
return 0;