Add fall-through comments.

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.
This commit is contained in:
Joseph Myers 2019-02-12 10:30:34 +00:00
parent a51bc4fe9d
commit 32db86d558
10 changed files with 33 additions and 0 deletions

View File

@ -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> 2019-02-11 Paul A. Clarke <pc@us.ibm.com>
* sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrtf): * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrtf):

View File

@ -123,6 +123,7 @@ _dl_exception_create_format (struct dl_exception *exception, const char *objname
++p; ++p;
break; break;
} }
/* Fall through. */
case 'x': case 'x':
length += INT_WIDTH / 4; length += INT_WIDTH / 4;
break; break;

View File

@ -1228,6 +1228,7 @@ parse_conf_include (const char *config_file, unsigned int lineno,
case GLOB_NOSPACE: case GLOB_NOSPACE:
errno = ENOMEM; errno = ENOMEM;
/* Fall through. */
case GLOB_ABORTED: case GLOB_ABORTED:
if (opt_verbose) if (opt_verbose)
error (0, errno, _("%s:%u: cannot read directory %s"), error (0, errno, _("%s:%u: cannot read directory %s"),

View File

@ -2738,8 +2738,10 @@ print_statistics (hp_timing_t *rtld_total_timep)
{ {
case 3: case 3:
*wp++ = *cp++; *wp++ = *cp++;
/* Fall through. */
case 2: case 2:
*wp++ = *cp++; *wp++ = *cp++;
/* Fall through. */
case 1: case 1:
*wp++ = '.'; *wp++ = '.';
*wp++ = *cp++; *wp++ = *cp++;
@ -2801,8 +2803,10 @@ print_statistics (hp_timing_t *rtld_total_timep)
{ {
case 3: case 3:
*wp++ = *cp++; *wp++ = *cp++;
/* Fall through. */
case 2: case 2:
*wp++ = *cp++; *wp++ = *cp++;
/* Fall through. */
case 1: case 1:
*wp++ = '.'; *wp++ = '.';
*wp++ = *cp++; *wp++ = *cp++;

View File

@ -713,6 +713,7 @@ only WIDTH definitions are allowed to follow the CHARMAP definition"));
state = 95; state = 95;
continue; continue;
} }
/* Fall through. */
case 96: case 96:
if (nowtok != tok_number) if (nowtok != tok_number)

View File

@ -174,8 +174,10 @@ __getmntent_r (FILE *stream, struct mntent *mp, char *buffer, int bufsiz)
{ {
case 0: case 0:
mp->mnt_freq = 0; mp->mnt_freq = 0;
/* Fall through. */
case 1: case 1:
mp->mnt_passno = 0; mp->mnt_passno = 0;
/* Fall through. */
case 2: case 2:
break; break;
} }

View File

@ -799,6 +799,7 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
case '(': case '(':
++paren_depth; ++paren_depth;
/* Fall through. */
default: default:
expr = w_addchar (expr, &expr_length, &expr_maxlen, words[*offset]); expr = w_addchar (expr, &expr_length, &expr_maxlen, words[*offset]);
if (expr == NULL) if (expr == NULL)
@ -2127,6 +2128,7 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
case '\'': case '\'':
squoting = 1 - squoting; squoting = 1 - squoting;
/* Fall through. */
default: default:
comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]); comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);
if (comm == NULL) if (comm == NULL)

View File

@ -113,9 +113,13 @@ ns_parse_ttl(const char *src, u_long *dst) {
ch = toupper(ch); ch = toupper(ch);
switch (ch) { switch (ch) {
case 'W': tmp *= 7; case 'W': tmp *= 7;
/* Fall through. */
case 'D': tmp *= 24; case 'D': tmp *= 24;
/* Fall through. */
case 'H': tmp *= 60; case 'H': tmp *= 60;
/* Fall through. */
case 'M': tmp *= 60; case 'M': tmp *= 60;
/* Fall through. */
case 'S': break; case 'S': break;
default: goto einval; default: goto einval;
} }

View File

@ -375,6 +375,7 @@ init_cpu_features (struct cpu_features *cpu_features)
of Core i3/i5/i7 processors if AVX is available. */ of Core i3/i5/i7 processors if AVX is available. */
if (!CPU_FEATURES_CPU_P (cpu_features, AVX)) if (!CPU_FEATURES_CPU_P (cpu_features, AVX))
break; break;
/* Fall through. */
case 0x1a: case 0x1a:
case 0x1e: case 0x1e:
@ -402,6 +403,7 @@ init_cpu_features (struct cpu_features *cpu_features)
/* Xeon E7 v3 with stepping >= 4 has working TSX. */ /* Xeon E7 v3 with stepping >= 4 has working TSX. */
if (stepping >= 4) if (stepping >= 4)
break; break;
/* Fall through. */
case 0x3c: case 0x3c:
case 0x45: case 0x45:
case 0x46: case 0x46:

View File

@ -347,6 +347,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
/* Set to symbol size plus addend. */ /* Set to symbol size plus addend. */
value = sym->st_size; value = sym->st_size;
# endif # endif
/* Fall through. */
case R_X86_64_GLOB_DAT: case R_X86_64_GLOB_DAT:
case R_X86_64_JUMP_SLOT: case R_X86_64_JUMP_SLOT:
*reloc_addr = value + reloc->r_addend; *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. */ /* Set to symbol size plus addend. */
value = sym->st_size; value = sym->st_size;
# endif # endif
/* Fall through. */
case R_X86_64_32: case R_X86_64_32:
value += reloc->r_addend; value += reloc->r_addend;
*(unsigned int *) reloc_addr = value; *(unsigned int *) reloc_addr = value;