Add fall-through comments.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 12 Feb 2019 10:30:34 +0000 (10:30 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 12 Feb 2019 10:30:34 +0000 (10:30 +0000)
This patch adds fall-through comments in some cases where -Wextra
produces implicit-fallthrough warnings.

The patch is non-exhaustive.  Apart from architecture-specific code
for non-x86_64 architectures, it does not change sunrpc/xdr.c (legacy
code, probably should have such changes, but left to be dealt with
separately), or places that already had comments about the
fall-through but not matching the form expected by
-Wimplicit-fallthrough=3 (the default level with -Wextra; my
inclination is to adjust those comments to match rather than
downgrading to -Wimplicit-fallthrough=1 to allow any comment), or one
place where I thought the implicit fallthrough was not correct and so
should be handled separately as a bug fix.  I think the key thing to
consider in review of this patch is whether the fall-through is indeed
intended and correct in each place where such a comment is added.

Tested for x86_64.

* elf/dl-exception.c (_dl_exception_create_format): Add
fall-through comments.
* elf/ldconfig.c (parse_conf_include): Likewise.
* elf/rtld.c (print_statistics): Likewise.
* locale/programs/charmap.c (parse_charmap): Likewise.
* misc/mntent_r.c (__getmntent_r): Likewise.
* posix/wordexp.c (parse_arith): Likewise.
(parse_backtick): Likewise.
* resolv/ns_ttl.c (ns_parse_ttl): Likewise.
* sysdeps/x86/cpu-features.c (init_cpu_features): Likewise.
* sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.

ChangeLog
elf/dl-exception.c
elf/ldconfig.c
elf/rtld.c
locale/programs/charmap.c
misc/mntent_r.c
posix/wordexp.c
resolv/ns_ttl.c
sysdeps/x86/cpu-features.c
sysdeps/x86_64/dl-machine.h

index 6f1d967..19e9200 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2019-02-12  Joseph Myers  <joseph@codesourcery.com>
+
+       * elf/dl-exception.c (_dl_exception_create_format): Add
+       fall-through comments.
+       * elf/ldconfig.c (parse_conf_include): Likewise.
+       * elf/rtld.c (print_statistics): Likewise.
+       * locale/programs/charmap.c (parse_charmap): Likewise.
+       * misc/mntent_r.c (__getmntent_r): Likewise.
+       * posix/wordexp.c (parse_arith): Likewise.
+       (parse_backtick): Likewise.
+       * resolv/ns_ttl.c (ns_parse_ttl): Likewise.
+       * sysdeps/x86/cpu-features.c (init_cpu_features): Likewise.
+       * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
+
 2019-02-11  Paul A. Clarke  <pc@us.ibm.com>
 
        * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrtf):
index f97d179..7ee19a7 100644 (file)
@@ -123,6 +123,7 @@ _dl_exception_create_format (struct dl_exception *exception, const char *objname
                  ++p;
                  break;
                }
+             /* Fall through.  */
            case 'x':
              length += INT_WIDTH / 4;
              break;
index 206cd51..3bc9e61 100644 (file)
@@ -1228,6 +1228,7 @@ parse_conf_include (const char *config_file, unsigned int lineno,
 
     case GLOB_NOSPACE:
       errno = ENOMEM;
+      /* Fall through.  */
     case GLOB_ABORTED:
       if (opt_verbose)
        error (0, errno, _("%s:%u: cannot read directory %s"),
index 5a90e78..44361ba 100644 (file)
@@ -2738,8 +2738,10 @@ print_statistics (hp_timing_t *rtld_total_timep)
        {
        case 3:
          *wp++ = *cp++;
+         /* Fall through.  */
        case 2:
          *wp++ = *cp++;
+         /* Fall through.  */
        case 1:
          *wp++ = '.';
          *wp++ = *cp++;
@@ -2801,8 +2803,10 @@ print_statistics (hp_timing_t *rtld_total_timep)
        {
        case 3:
          *wp++ = *cp++;
+         /* Fall through.  */
        case 2:
          *wp++ = *cp++;
+         /* Fall through.  */
        case 1:
          *wp++ = '.';
          *wp++ = *cp++;
index cba8397..0dbd8d3 100644 (file)
@@ -713,6 +713,7 @@ only WIDTH definitions are allowed to follow the CHARMAP definition"));
              state = 95;
              continue;
            }
+         /* Fall through.  */
 
        case 96:
          if (nowtok != tok_number)
index 1d5e259..5d88c45 100644 (file)
@@ -174,8 +174,10 @@ __getmntent_r (FILE *stream, struct mntent *mp, char *buffer, int bufsiz)
     {
     case 0:
       mp->mnt_freq = 0;
+      /* Fall through.  */
     case 1:
       mp->mnt_passno = 0;
+      /* Fall through.  */
     case 2:
       break;
     }
index 825ad97..248de77 100644 (file)
@@ -799,6 +799,7 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
 
        case '(':
          ++paren_depth;
+         /* Fall through.  */
        default:
          expr = w_addchar (expr, &expr_length, &expr_maxlen, words[*offset]);
          if (expr == NULL)
@@ -2127,6 +2128,7 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
 
        case '\'':
          squoting = 1 - squoting;
+         /* Fall through.  */
        default:
          comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);
          if (comm == NULL)
index 0799487..d29d9dc 100644 (file)
@@ -113,9 +113,13 @@ ns_parse_ttl(const char *src, u_long *dst) {
                        ch = toupper(ch);
                switch (ch) {
                case 'W':  tmp *= 7;
+                 /* Fall through.  */
                case 'D':  tmp *= 24;
+                 /* Fall through.  */
                case 'H':  tmp *= 60;
+                 /* Fall through.  */
                case 'M':  tmp *= 60;
+                 /* Fall through.  */
                case 'S':  break;
                default:   goto einval;
                }
index 121f706..4c7d93a 100644 (file)
@@ -375,6 +375,7 @@ init_cpu_features (struct cpu_features *cpu_features)
                 of Core i3/i5/i7 processors if AVX is available.  */
              if (!CPU_FEATURES_CPU_P (cpu_features, AVX))
                break;
+             /* Fall through.  */
 
            case 0x1a:
            case 0x1e:
@@ -402,6 +403,7 @@ init_cpu_features (struct cpu_features *cpu_features)
              /* Xeon E7 v3 with stepping >= 4 has working TSX.  */
              if (stepping >= 4)
                break;
+             /* Fall through.  */
            case 0x3c:
            case 0x45:
            case 0x46:
index d10e08a..95a13b3 100644 (file)
@@ -347,6 +347,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
          /* Set to symbol size plus addend.  */
          value = sym->st_size;
 # endif
+         /* Fall through.  */
        case R_X86_64_GLOB_DAT:
        case R_X86_64_JUMP_SLOT:
          *reloc_addr = value + reloc->r_addend;
@@ -460,6 +461,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
          /* Set to symbol size plus addend.  */
          value = sym->st_size;
 #  endif
+         /* Fall through.  */
        case R_X86_64_32:
          value += reloc->r_addend;
          *(unsigned int *) reloc_addr = value;