From 250ca947da463841f7c1858c293e17a7e824d637 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 21 Apr 2017 14:09:47 -0700 Subject: grub: Fix build with gcc7 backport patches from upsteam and adapt them to 2.0 codebase (From OE-Core rev: 347976bf08158d1aa46dfea6f0f9d6dcc0d97395) (From OE-Core rev: 74da4a06619558b34752d3588fd965a7994106e3) Signed-off-by: Khem Raj Signed-off-by: Armin Kuster Signed-off-by: Richard Purdie Signed-off-by: Armin Kuster Signed-off-by: Richard Purdie --- ...-ppc-fix-switch-fallthrough-cases-with-GC.patch | 248 +++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch (limited to 'meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch') diff --git a/meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch b/meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch new file mode 100644 index 0000000000..94f048c28b --- /dev/null +++ b/meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch @@ -0,0 +1,248 @@ +From 4bd4a88725604471fdbd86316c91967a7f4dba5a Mon Sep 17 00:00:00 2001 +From: Andrei Borzenkov +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 + + 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; -- cgit v1.2.3-54-g00ecf