diff options
Diffstat (limited to 'meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch')
-rw-r--r-- | meta/recipes-bsp/grub/files/0002-i386-x86_64-ppc-fix-switch-fallthrough-cases-with-GC.patch | 248 |
1 files changed, 248 insertions, 0 deletions
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 @@ | |||
1 | From 4bd4a88725604471fdbd86316c91967a7f4dba5a Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Borzenkov <arvidjaar@gmail.com> | ||
3 | Date: Tue, 4 Apr 2017 19:23:55 +0300 | ||
4 | Subject: [PATCH 2/4] i386, x86_64, ppc: fix switch fallthrough cases with GCC7 | ||
5 | |||
6 | In util/getroot and efidisk slightly modify exitsing comment to mostly | ||
7 | retain it but still make GCC7 compliant with respect to fall through | ||
8 | annotation. | ||
9 | |||
10 | In grub-core/lib/xzembed/xz_dec_lzma2.c it adds same comments as | ||
11 | upstream. | ||
12 | |||
13 | In grub-core/tests/setjmp_tets.c declare functions as "noreturn" to | ||
14 | suppress GCC7 warning. | ||
15 | |||
16 | In grub-core/gnulib/regexec.c use new __attribute__, because existing | ||
17 | annotation is not recognized by GCC7 parser (which requires that comment | ||
18 | immediately precedes case statement). | ||
19 | |||
20 | Otherwise add FALLTHROUGH comment. | ||
21 | |||
22 | Closes: 50598 | ||
23 | --- | ||
24 | Upstream-Status: Backport | ||
25 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
26 | |||
27 | grub-core/commands/hdparm.c | 1 + | ||
28 | grub-core/commands/nativedisk.c | 1 + | ||
29 | grub-core/disk/cryptodisk.c | 1 + | ||
30 | grub-core/disk/efi/efidisk.c | 2 +- | ||
31 | grub-core/efiemu/mm.c | 1 + | ||
32 | grub-core/gdb/cstub.c | 1 + | ||
33 | grub-core/gnulib/regexec.c | 3 +++ | ||
34 | grub-core/lib/xzembed/xz_dec_lzma2.c | 4 ++++ | ||
35 | grub-core/lib/xzembed/xz_dec_stream.c | 6 ++++++ | ||
36 | grub-core/loader/i386/linux.c | 3 +++ | ||
37 | grub-core/tests/setjmp_test.c | 5 ++++- | ||
38 | grub-core/video/ieee1275.c | 1 + | ||
39 | grub-core/video/readers/jpeg.c | 1 + | ||
40 | util/getroot.c | 2 +- | ||
41 | util/grub-install.c | 1 + | ||
42 | util/grub-mkimagexx.c | 1 + | ||
43 | util/grub-mount.c | 1 + | ||
44 | 17 files changed, 32 insertions(+), 3 deletions(-) | ||
45 | |||
46 | Index: grub-2.00/grub-core/commands/hdparm.c | ||
47 | =================================================================== | ||
48 | --- grub-2.00.orig/grub-core/commands/hdparm.c | ||
49 | +++ grub-2.00/grub-core/commands/hdparm.c | ||
50 | @@ -328,6 +328,7 @@ grub_cmd_hdparm (grub_extcmd_context_t c | ||
51 | ata = ((struct grub_scsi *) disk->data)->data; | ||
52 | break; | ||
53 | } | ||
54 | + /* FALLTHROUGH */ | ||
55 | default: | ||
56 | return grub_error (GRUB_ERR_IO, "not an ATA device"); | ||
57 | } | ||
58 | Index: grub-2.00/grub-core/disk/cryptodisk.c | ||
59 | =================================================================== | ||
60 | --- grub-2.00.orig/grub-core/disk/cryptodisk.c | ||
61 | +++ grub-2.00/grub-core/disk/cryptodisk.c | ||
62 | @@ -268,6 +268,7 @@ grub_cryptodisk_endecrypt (struct grub_c | ||
63 | break; | ||
64 | case GRUB_CRYPTODISK_MODE_IV_PLAIN64: | ||
65 | iv[1] = grub_cpu_to_le32 (sector >> 32); | ||
66 | + /* FALLTHROUGH */ | ||
67 | case GRUB_CRYPTODISK_MODE_IV_PLAIN: | ||
68 | iv[0] = grub_cpu_to_le32 (sector & 0xFFFFFFFF); | ||
69 | break; | ||
70 | Index: grub-2.00/grub-core/disk/efi/efidisk.c | ||
71 | =================================================================== | ||
72 | --- grub-2.00.orig/grub-core/disk/efi/efidisk.c | ||
73 | +++ grub-2.00/grub-core/disk/efi/efidisk.c | ||
74 | @@ -262,7 +262,7 @@ name_devices (struct grub_efidisk_data * | ||
75 | { | ||
76 | case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE: | ||
77 | is_hard_drive = 1; | ||
78 | - /* Fall through by intention. */ | ||
79 | + /* Intentionally fall through. */ | ||
80 | case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE: | ||
81 | { | ||
82 | struct grub_efidisk_data *parent, *parent2; | ||
83 | Index: grub-2.00/grub-core/efiemu/mm.c | ||
84 | =================================================================== | ||
85 | --- grub-2.00.orig/grub-core/efiemu/mm.c | ||
86 | +++ grub-2.00/grub-core/efiemu/mm.c | ||
87 | @@ -410,6 +410,7 @@ grub_efiemu_mmap_fill (void) | ||
88 | default: | ||
89 | grub_dprintf ("efiemu", | ||
90 | "Unknown memory type %d. Assuming unusable\n", type); | ||
91 | + /* FALLTHROUGH */ | ||
92 | case GRUB_MEMORY_RESERVED: | ||
93 | return grub_efiemu_add_to_mmap (addr, size, | ||
94 | GRUB_EFI_UNUSABLE_MEMORY); | ||
95 | Index: grub-2.00/grub-core/gdb/cstub.c | ||
96 | =================================================================== | ||
97 | --- grub-2.00.orig/grub-core/gdb/cstub.c | ||
98 | +++ grub-2.00/grub-core/gdb/cstub.c | ||
99 | @@ -336,6 +336,7 @@ grub_gdb_trap (int trap_no) | ||
100 | /* sAA..AA: Step one instruction from AA..AA(optional). */ | ||
101 | case 's': | ||
102 | stepping = 1; | ||
103 | + /* FALLTHROUGH */ | ||
104 | |||
105 | /* cAA..AA: Continue at address AA..AA(optional). */ | ||
106 | case 'c': | ||
107 | Index: grub-2.00/grub-core/gnulib/regexec.c | ||
108 | =================================================================== | ||
109 | --- grub-2.00.orig/grub-core/gnulib/regexec.c | ||
110 | +++ grub-2.00/grub-core/gnulib/regexec.c | ||
111 | @@ -4104,6 +4104,9 @@ check_node_accept (const re_match_contex | ||
112 | case OP_UTF8_PERIOD: | ||
113 | if (ch >= ASCII_CHARS) | ||
114 | return false; | ||
115 | +#if defined __GNUC__ && __GNUC__ >= 7 | ||
116 | + __attribute__ ((fallthrough)); | ||
117 | +#endif | ||
118 | /* FALLTHROUGH */ | ||
119 | #endif | ||
120 | case OP_PERIOD: | ||
121 | Index: grub-2.00/grub-core/lib/xzembed/xz_dec_lzma2.c | ||
122 | =================================================================== | ||
123 | --- grub-2.00.orig/grub-core/lib/xzembed/xz_dec_lzma2.c | ||
124 | +++ grub-2.00/grub-core/lib/xzembed/xz_dec_lzma2.c | ||
125 | @@ -1042,6 +1042,8 @@ enum xz_ret xz_dec_lzma2_run( | ||
126 | |||
127 | s->lzma2.sequence = SEQ_LZMA_PREPARE; | ||
128 | |||
129 | + /* Fall through */ | ||
130 | + | ||
131 | case SEQ_LZMA_PREPARE: | ||
132 | if (s->lzma2.compressed < RC_INIT_BYTES) | ||
133 | return XZ_DATA_ERROR; | ||
134 | @@ -1052,6 +1054,8 @@ enum xz_ret xz_dec_lzma2_run( | ||
135 | s->lzma2.compressed -= RC_INIT_BYTES; | ||
136 | s->lzma2.sequence = SEQ_LZMA_RUN; | ||
137 | |||
138 | + /* Fall through */ | ||
139 | + | ||
140 | case SEQ_LZMA_RUN: | ||
141 | /* | ||
142 | * Set dictionary limit to indicate how much we want | ||
143 | Index: grub-2.00/grub-core/lib/xzembed/xz_dec_stream.c | ||
144 | =================================================================== | ||
145 | --- grub-2.00.orig/grub-core/lib/xzembed/xz_dec_stream.c | ||
146 | +++ grub-2.00/grub-core/lib/xzembed/xz_dec_stream.c | ||
147 | @@ -749,6 +749,7 @@ static enum xz_ret dec_main(struct xz_de | ||
148 | |||
149 | s->sequence = SEQ_BLOCK_START; | ||
150 | |||
151 | + /* FALLTHROUGH */ | ||
152 | case SEQ_BLOCK_START: | ||
153 | /* We need one byte of input to continue. */ | ||
154 | if (b->in_pos == b->in_size) | ||
155 | @@ -772,6 +773,7 @@ static enum xz_ret dec_main(struct xz_de | ||
156 | s->temp.pos = 0; | ||
157 | s->sequence = SEQ_BLOCK_HEADER; | ||
158 | |||
159 | + /* FALLTHROUGH */ | ||
160 | case SEQ_BLOCK_HEADER: | ||
161 | if (!fill_temp(s, b)) | ||
162 | return XZ_OK; | ||
163 | @@ -782,6 +784,7 @@ static enum xz_ret dec_main(struct xz_de | ||
164 | |||
165 | s->sequence = SEQ_BLOCK_UNCOMPRESS; | ||
166 | |||
167 | + /* FALLTHROUGH */ | ||
168 | case SEQ_BLOCK_UNCOMPRESS: | ||
169 | ret = dec_block(s, b); | ||
170 | if (ret != XZ_STREAM_END) | ||
171 | @@ -809,6 +812,7 @@ static enum xz_ret dec_main(struct xz_de | ||
172 | |||
173 | s->sequence = SEQ_BLOCK_CHECK; | ||
174 | |||
175 | + /* FALLTHROUGH */ | ||
176 | case SEQ_BLOCK_CHECK: | ||
177 | ret = hash_validate(s, b, 0); | ||
178 | if (ret != XZ_STREAM_END) | ||
179 | @@ -863,6 +867,7 @@ static enum xz_ret dec_main(struct xz_de | ||
180 | |||
181 | s->sequence = SEQ_INDEX_CRC32; | ||
182 | |||
183 | + /* FALLTHROUGH */ | ||
184 | case SEQ_INDEX_CRC32: | ||
185 | ret = hash_validate(s, b, 1); | ||
186 | if (ret != XZ_STREAM_END) | ||
187 | @@ -871,6 +876,7 @@ static enum xz_ret dec_main(struct xz_de | ||
188 | s->temp.size = STREAM_HEADER_SIZE; | ||
189 | s->sequence = SEQ_STREAM_FOOTER; | ||
190 | |||
191 | + /* FALLTHROUGH */ | ||
192 | case SEQ_STREAM_FOOTER: | ||
193 | if (!fill_temp(s, b)) | ||
194 | return XZ_OK; | ||
195 | Index: grub-2.00/grub-core/loader/i386/linux.c | ||
196 | =================================================================== | ||
197 | --- grub-2.00.orig/grub-core/loader/i386/linux.c | ||
198 | +++ grub-2.00/grub-core/loader/i386/linux.c | ||
199 | @@ -977,10 +977,13 @@ grub_cmd_linux (grub_command_t cmd __att | ||
200 | { | ||
201 | case 'g': | ||
202 | shift += 10; | ||
203 | + /* FALLTHROUGH */ | ||
204 | case 'm': | ||
205 | shift += 10; | ||
206 | + /* FALLTHROUGH */ | ||
207 | case 'k': | ||
208 | shift += 10; | ||
209 | + /* FALLTHROUGH */ | ||
210 | default: | ||
211 | break; | ||
212 | } | ||
213 | Index: grub-2.00/grub-core/video/readers/jpeg.c | ||
214 | =================================================================== | ||
215 | --- grub-2.00.orig/grub-core/video/readers/jpeg.c | ||
216 | +++ grub-2.00/grub-core/video/readers/jpeg.c | ||
217 | @@ -701,6 +701,7 @@ grub_jpeg_decode_jpeg (struct grub_jpeg_ | ||
218 | case JPEG_MARKER_SOS: /* Start Of Scan. */ | ||
219 | if (grub_jpeg_decode_sos (data)) | ||
220 | break; | ||
221 | + /* FALLTHROUGH */ | ||
222 | case JPEG_MARKER_RST0: /* Restart. */ | ||
223 | case JPEG_MARKER_RST1: | ||
224 | case JPEG_MARKER_RST2: | ||
225 | Index: grub-2.00/util/grub-mkimagexx.c | ||
226 | =================================================================== | ||
227 | --- grub-2.00.orig/util/grub-mkimagexx.c | ||
228 | +++ grub-2.00/util/grub-mkimagexx.c | ||
229 | @@ -485,6 +485,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e | ||
230 | + sym->st_value | ||
231 | - image_target->vaddr_offset)); | ||
232 | } | ||
233 | + /* FALLTHROUGH */ | ||
234 | case R_IA64_LTOFF_FPTR22: | ||
235 | *gpptr = grub_host_to_target64 (addend + sym_addr); | ||
236 | add_value_to_slot_21 ((grub_addr_t) target, | ||
237 | Index: grub-2.00/util/grub-mount.c | ||
238 | =================================================================== | ||
239 | --- grub-2.00.orig/util/grub-mount.c | ||
240 | +++ grub-2.00/util/grub-mount.c | ||
241 | @@ -487,6 +487,7 @@ argp_parser (int key, char *arg, struct | ||
242 | if (arg[0] != '-') | ||
243 | break; | ||
244 | |||
245 | + /* FALLTHROUGH */ | ||
246 | default: | ||
247 | if (!arg) | ||
248 | return 0; | ||