Fix GCC7 warnings about switch-case fallthroughs
authorFreddie Chopin <freddie.chopin@gmail.com>
Thu, 29 Jun 2017 21:48:19 +0000 (23:48 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Mon, 23 Oct 2017 09:54:16 +0000 (10:54 +0100)
GCC7 with -Wextra warns about switch-case blocks which fallthrough with
"this statement may fall through [-Werror=implicit-fallthrough=]". This
can be fixed by adding "special" comments: "/* fallthrough */".

See https://gcc.gnu.org/gcc-7/changes.html

Change-Id: Iba0be791dbdd86984489b2d9a0592bb59828da1e
Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com>
Reviewed-on: http://openocd.zylin.com/4174
Tested-by: jenkins
src/flash/mflash.c
src/flash/nand/mx3.c
src/flash/nor/kinetis.c
src/helper/command.c
src/jtag/drivers/ftdi.c
src/jtag/drivers/kitprog.c
src/svf/svf.c
src/target/arm_adi_v5.c
src/target/arm_disassembler.c
src/target/target.c

index b6999554279114c6967e971f99568fa86218e6eb..4c95d216caa1896f0deee458e9ea415f679b9316 100644 (file)
@@ -259,11 +259,11 @@ static int mg_dsk_wait(mg_io_type_wait wait_local, uint32_t time_var)
                                case mg_io_wait_rdy:
                                        if (status & mg_io_rbit_status_ready)
                                                return ERROR_OK;
-
+                                       /* fallthrough */
                                case mg_io_wait_drq:
                                        if (status & mg_io_rbit_status_data_req)
                                                return ERROR_OK;
-
+                                       /* fallthrough */
                                default:
                                        break;
                        }
index b61e47535fbf5bb5363302798d63c0712845a80e..5fdc923056c96ec875208297d4c9ba7f5f0e9553 100644 (file)
@@ -281,6 +281,7 @@ static int imx31_command(struct nand_device *nand, uint8_t command)
                         * offset == one half of page size
                         */
                        in_sram_address = MX3_NF_MAIN_BUFFER0 + (nand->page_size >> 1);
+                       break;
                default:
                        in_sram_address = MX3_NF_MAIN_BUFFER0;
        }
index 4ef4385070183f38f035e7466ac0a90f0f41c393..455e7b1b08a0324e663a2622bf91c6e799953009 100644 (file)
@@ -2126,6 +2126,7 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
                        case KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX1:     /* errata 7534 - should be K63 */
                        case KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX2:     /* errata 7534 - should be K64 */
                                subfamid += 2; /* errata 7534 fix */
+                               /* fallthrough */
                        case KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX3:
                                /* K63FN1M0 */
                        case KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX4:
index 5deaee859342ae03ad1fa1e7253ed925faff88f4..40e8b05827f1b506fd9d0cb0188482e8dc55f0ae 100644 (file)
@@ -1456,8 +1456,8 @@ COMMAND_HELPER(handle_command_parse_bool, bool *out, const char *label)
                                LOG_ERROR("%s: argument '%s' is not valid", CMD_NAME, in);
                                return ERROR_COMMAND_SYNTAX_ERROR;
                        }
-                       /* fall through */
                }
+                       /* fallthrough */
                case 0:
                        LOG_INFO("%s is %s", label, *out ? "enabled" : "disabled");
                        break;
index 342e3210299e855ea1caa6fed583112cad07ea84..75a3ce43eddf6f497ed275fd0fde7fcba2bbce5c 100644 (file)
@@ -855,6 +855,7 @@ COMMAND_HANDLER(ftdi_handle_set_signal_command)
                        ftdi_set_signal(sig, *CMD_ARGV[1]);
                        break;
                }
+               /* fallthrough */
        default:
                LOG_ERROR("unknown signal level '%s', use 0, 1 or z", CMD_ARGV[1]);
                return ERROR_COMMAND_SYNTAX_ERROR;
index c689848c813da386170687344ed774ce2d61cbb4..584da8c9482c96a9663988dd04e758faec3673b8 100644 (file)
@@ -657,6 +657,7 @@ static int kitprog_swd_switch_seq(enum swd_special_seq seq)
                                LOG_DEBUG("JTAG to SWD not supported");
                                /* Fall through to fix target reset issue */
                        }
+                       /* fallthrough */
                case LINE_RESET:
                        LOG_DEBUG("SWD line reset");
                        if (kitprog_swd_seq(SEQUENCE_LINE_RESET) != ERROR_OK)
index e7e815c1046513e8a9f003477a28f7dfb89c7923..1d686ba6174c1e1e279ba66d36ac71b660f9faff 100644 (file)
@@ -661,11 +661,13 @@ static int svf_read_command_from_file(FILE *fd)
                                if (svf_getline(&svf_read_line, &svf_read_line_size, svf_fd) <= 0)
                                        return ERROR_FAIL;
                                i = -1;
+                               /* fallthrough */
                        case '\r':
                                slash = 0;
                                /* Don't save '\r' and '\n' if no data is parsed */
                                if (!cmd_pos)
                                        break;
+                               /* fallthrough */
                        default:
                                /* The parsing code currently expects a space
                                 * before parentheses -- "TDI (123)".  Also a
index eafc2ddc082f276fd72076f421bc6077fc771b7a..88491196d3d22371141d9abc163f9b5046f096ed 100644 (file)
@@ -346,8 +346,10 @@ static int mem_ap_write(struct adiv5_ap *ap, const uint8_t *buffer, uint32_t siz
                        case 4:
                                outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
                                outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
+                               /* fallthrough */
                        case 2:
                                outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
+                               /* fallthrough */
                        case 1:
                                outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
                        }
@@ -509,8 +511,10 @@ static int mem_ap_read(struct adiv5_ap *ap, uint8_t *buffer, uint32_t size, uint
                        case 4:
                                *buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
                                *buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
+                               /* fallthrough */
                        case 2:
                                *buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
+                               /* fallthrough */
                        case 1:
                                *buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
                        }
@@ -519,8 +523,10 @@ static int mem_ap_read(struct adiv5_ap *ap, uint8_t *buffer, uint32_t size, uint
                        case 4:
                                *buffer++ = *read_ptr >> 8 * (address++ & 3);
                                *buffer++ = *read_ptr >> 8 * (address++ & 3);
+                               /* fallthrough */
                        case 2:
                                *buffer++ = *read_ptr >> 8 * (address++ & 3);
+                               /* fallthrough */
                        case 1:
                                *buffer++ = *read_ptr >> 8 * (address++ & 3);
                        }
index 5277b94d88de152d2a16cf2a9ddb7742b2b8dbaa..3f1daca4d16309e9a4db50803c209670fea48d47 100644 (file)
@@ -3299,6 +3299,7 @@ static int t2ev_data_immed(uint32_t opcode, uint32_t address,
                case 0x10:
                case 0x12:
                        is_signed = true;
+                       /* fallthrough */
                case 0x18:
                case 0x1a:
                        /* signed/unsigned saturated add */
index 07fe453d9b14a2fa51b37708d0f1911b8b73f75a..36318d88e423887c7d1a2249b5906b80b77b7117 100644 (file)
@@ -3684,7 +3684,7 @@ COMMAND_HANDLER(handle_bp_command)
                                addr = 0;
                                return handle_bp_command_set(CMD_CTX, addr, asid, length, hw);
                        }
-
+                       /* fallthrough */
                case 4:
                        hw = BKPT_HARD;
                        COMMAND_PARSE_ADDRESS(CMD_ARGV[0], addr);