diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | backends/ChangeLog | 11 | ||||
-rw-r--r-- | backends/i386_regs.c | 1 | ||||
-rw-r--r-- | backends/i386_retval.c | 3 | ||||
-rw-r--r-- | backends/linux-core-note.c | 4 | ||||
-rw-r--r-- | backends/m68k_retval.c | 4 | ||||
-rw-r--r-- | backends/ppc_regs.c | 2 | ||||
-rw-r--r-- | backends/x86_64_regs.c | 1 | ||||
-rw-r--r-- | config/ChangeLog | 5 | ||||
-rw-r--r-- | config/eu.am | 8 | ||||
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | libcpu/ChangeLog | 6 | ||||
-rw-r--r-- | libcpu/i386_disasm.c | 2 | ||||
-rw-r--r-- | libdw/ChangeLog | 10 | ||||
-rw-r--r-- | libdw/cfi.c | 2 | ||||
-rw-r--r-- | libdw/encoded-value.h | 1 | ||||
-rw-r--r-- | libdwfl/dwfl_report_elf.c | 2 | ||||
-rw-r--r-- | src/ChangeLog | 8 | ||||
-rw-r--r-- | src/addr2line.c | 1 | ||||
-rw-r--r-- | src/elfcompress.c | 3 | ||||
-rw-r--r-- | src/elflint.c | 4 | ||||
-rw-r--r-- | src/objdump.c | 4 | ||||
-rw-r--r-- | tests/ChangeLog | 5 | ||||
-rw-r--r-- | tests/backtrace-data.c | 1 | ||||
-rw-r--r-- | tests/backtrace.c | 2 |
25 files changed, 89 insertions, 18 deletions
@@ -1,4 +1,9 @@ -2015-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * configure.ac: Add check for whether gcc accepts + -Wimplict-fallthrough. + +2016-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> * configure.ac: Add memrchr, rawmemchr and powerof2 checks. diff --git a/backends/ChangeLog b/backends/ChangeLog index 53d29081..1c561b50 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,14 @@ +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * i386_regs.c (i386_register_info): Add fallthrough comment. + * i386_retval.c (i386_return_value_location): Move fallthrough + comment. + * linux-core-note.c (core_note): Adjust fallthrough comment. + * m68k_retval.c (m68k_return_value_location): Move fallthrough + comment. + * ppc_regs.c (ppc_register_info): Add fallthrough comment. + * x86_64_regs.c (x86_64_register_info): Likewise. + 2016-08-09 Jose E. Marchesi <jose.marchesi@oracle.com> * sparc_attrs.c (sparc_check_object_attribute): Fix the diff --git a/backends/i386_regs.c b/backends/i386_regs.c index fb8ded33..fd963a62 100644 --- a/backends/i386_regs.c +++ b/backends/i386_regs.c @@ -92,6 +92,7 @@ i386_register_info (Ebl *ebl __attribute__ ((unused)), case 5: case 8: *type = DW_ATE_address; + /* Fallthrough */ case 0 ... 3: case 6 ... 7: name[0] = 'e'; diff --git a/backends/i386_retval.c b/backends/i386_retval.c index 9da797d5..4aa646fe 100644 --- a/backends/i386_retval.c +++ b/backends/i386_retval.c @@ -122,9 +122,8 @@ i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) return nloc_intreg; if (size <= 8) return nloc_intregpair; - - /* Else fall through. */ } + /* Fallthrough */ case DW_TAG_structure_type: case DW_TAG_class_type: diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c index a4ec0be0..67638d70 100644 --- a/backends/linux-core-note.c +++ b/backends/linux-core-note.c @@ -225,8 +225,8 @@ EBLHOOK(core_note) (const GElf_Nhdr *nhdr, const char *name, case sizeof "CORE": if (memcmp (name, "CORE", nhdr->n_namesz) == 0) break; - /* Buggy old Linux kernels didn't terminate "LINUX". - Fall through. */ + /* Buggy old Linux kernels didn't terminate "LINUX". */ + /* Fall through. */ case sizeof "LINUX": if (memcmp (name, "LINUX", nhdr->n_namesz) == 0) diff --git a/backends/m68k_retval.c b/backends/m68k_retval.c index 2dd285a0..c68ed022 100644 --- a/backends/m68k_retval.c +++ b/backends/m68k_retval.c @@ -134,10 +134,8 @@ m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) return nloc_intreg; if (size <= 8) return nloc_intregpair; - - /* Else fall through. */ } - + /* Fallthrough */ case DW_TAG_structure_type: case DW_TAG_class_type: case DW_TAG_union_type: diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c index 4b92a9aa..bcf4f7a3 100644 --- a/backends/ppc_regs.c +++ b/backends/ppc_regs.c @@ -140,7 +140,7 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)), case 100: if (*bits == 32) return stpcpy (name, "mq") + 1 - name; - + /* Fallthrough */ case 102 ... 107: name[0] = 's'; name[1] = 'p'; diff --git a/backends/x86_64_regs.c b/backends/x86_64_regs.c index 2172d9f1..84304407 100644 --- a/backends/x86_64_regs.c +++ b/backends/x86_64_regs.c @@ -87,6 +87,7 @@ x86_64_register_info (Ebl *ebl __attribute__ ((unused)), case 6 ... 7: *type = DW_ATE_address; + /* Fallthrough */ case 0 ... 5: name[0] = 'r'; name[1] = baseregs[regno][0]; diff --git a/config/ChangeLog b/config/ChangeLog index 2ca25bc3..a18fa847 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,8 @@ +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * eu.am: Check HAVE_IMPLICIT_FALLTHROUGH_WARNING. + (AM_CFLAGS): Add IMPLICIT_FALLTHROUGH_WARNING. + 2016-08-04 Mark Wielaard <mjw@redhat.com> * elfutils.spec.in: Update for 0.167. diff --git a/config/eu.am b/config/eu.am index 4998771d..8fe1e259 100644 --- a/config/eu.am +++ b/config/eu.am @@ -61,10 +61,16 @@ else NULL_DEREFERENCE_WARNING= endif +if HAVE_IMPLICIT_FALLTHROUGH_WARNING +IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough +else +IMPLICIT_FALLTHROUGH_WARNING= +endif + AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ -Wold-style-definition -Wstrict-prototypes \ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ - $(NULL_DEREFERENCE_WARNING) \ + $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ $(if $($(*F)_no_Werror),,-Werror) \ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ diff --git a/configure.ac b/configure.ac index c02d4c2a..c55fb9b4 100644 --- a/configure.ac +++ b/configure.ac @@ -311,6 +311,16 @@ CFLAGS="$old_CFLAGS"]) AM_CONDITIONAL(HAVE_NULL_DEREFERENCE_WARNING, [test "x$ac_cv_null_dereference" != "xno"]) +# -Wimplicit-fallthrough was added by GCC7 +AC_CACHE_CHECK([whether gcc accepts -Wimplicit-fallthrough], ac_cv_implicit_fallthrough, [dnl +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wimplicit-fallthrough -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], + ac_cv_implicit_fallthrough=yes, ac_cv_implicit_fallthrough=no) +CFLAGS="$old_CFLAGS"]) +AM_CONDITIONAL(HAVE_IMPLICIT_FALLTHROUGH_WARNING, + [test "x$ac_cv_implicit_fallthrough" != "xno"]) + dnl Check if we have argp available from our libc AC_LINK_IFELSE( [AC_LANG_PROGRAM( diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index fff1d96a..79110c22 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,4 +1,8 @@ -2015-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * i386_disasm.c (i386_disasm): Add fallthrough comment. + +2016-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> * i386_lex.l: Remove system.h include, add libeu.h include. * i386_parse.y: Remove sys/param.h include, add libeu.h include. diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index 699dd619..831afbe2 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -819,7 +819,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)), ++param_start; break; } - + /* Fallthrough */ default: assert (! "INVALID not handled"); } diff --git a/libdw/ChangeLog b/libdw/ChangeLog index c2f25ea6..cc92f163 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,4 +1,12 @@ -2015-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * cfi.c (execute_cfi): Add fallthrough comments. + * encoded-value.h (encoded_value_size): Add explicit return instead + of relying on fallthrough. + * dwfl_report_elf.c (__libdwfl_elf_address_range): Add fallthrough + comment. + +2016-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> * dwarf_getpubnames.c: Remove sys/param.h include, add system.h. * libdw_alloc.c: Likewise. diff --git a/libdw/cfi.c b/libdw/cfi.c index 1fd668d7..daa845f3 100644 --- a/libdw/cfi.c +++ b/libdw/cfi.c @@ -138,6 +138,7 @@ execute_cfi (Dwarf_CFI *cache, case DW_CFA_advance_loc1: operand = *program++; + /* Fallthrough */ case DW_CFA_advance_loc + 0 ... DW_CFA_advance_loc + CFI_PRIMARY_MAX: advance_loc: loc += operand * cie->code_alignment_factor; @@ -300,6 +301,7 @@ execute_cfi (Dwarf_CFI *cache, case DW_CFA_restore_extended: get_uleb128 (operand, program, end); + /* Fallthrough */ case DW_CFA_restore + 0 ... DW_CFA_restore + CFI_PRIMARY_MAX: if (unlikely (abi_cfi) && likely (opcode == DW_CFA_restore)) diff --git a/libdw/encoded-value.h b/libdw/encoded-value.h index 48d868fb..f0df4cec 100644 --- a/libdw/encoded-value.h +++ b/libdw/encoded-value.h @@ -64,6 +64,7 @@ encoded_value_size (const Elf_Data *data, const unsigned char e_ident[], if (*end++ & 0x80u) return end - p; } + return 0; default: return 0; diff --git a/libdwfl/dwfl_report_elf.c b/libdwfl/dwfl_report_elf.c index 1c6e401d..73a5511a 100644 --- a/libdwfl/dwfl_report_elf.c +++ b/libdwfl/dwfl_report_elf.c @@ -170,7 +170,7 @@ __libdwfl_elf_address_range (Elf *elf, GElf_Addr base, bool add_p_vaddr, /* An assigned base address is meaningless for these. */ base = 0; add_p_vaddr = true; - + /* Fallthrough. */ case ET_DYN: default:; size_t phnum; diff --git a/src/ChangeLog b/src/ChangeLog index ee67cffc..b2909b65 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * addr2line.c (handle_address): Add fallthrough comment. + * elfcompress.c (parse_opt): Adjust fallthrough comment. + * elflint.c (parse_opt): Add missing break after 'd' case. + (check_sections): Add fallthrough comments. + * objdump.c (parse_opt): Add explantion for fallthrough comment. + 2016-10-22 Kevin Cernekee <cernekee@chromium.org> * unstrip.c: Fix "invalid string offset" error caused by using the diff --git a/src/addr2line.c b/src/addr2line.c index 0ce854f6..bea24aea 100644 --- a/src/addr2line.c +++ b/src/addr2line.c @@ -632,6 +632,7 @@ handle_address (const char *string, Dwfl *dwfl) case 1: addr = 0; j = i; + /* Fallthrough */ case 2: if (string[j] != '\0') break; diff --git a/src/elfcompress.c b/src/elfcompress.c index 7392cb76..82ab9655 100644 --- a/src/elfcompress.c +++ b/src/elfcompress.c @@ -155,7 +155,8 @@ parse_opt (int key, char *arg __attribute__ ((unused)), argp_error (state, N_("Only one input file allowed together with '-o'")); /* We only use this for checking the number of arguments, we don't - actually want to consume them, so fallthrough. */ + actually want to consume them. */ + /* Fallthrough */ default: return ARGP_ERR_UNKNOWN; } diff --git a/src/elflint.c b/src/elflint.c index 8b52ee2b..b304a309 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -210,6 +210,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)), case 'd': is_debuginfo = true; + break; case ARGP_gnuld: gnuld = true; @@ -3963,6 +3964,7 @@ section [%2zu] '%s': merge flag set but entry size is zero\n"), case SHT_NOBITS: if (is_debuginfo) break; + /* Fallthrough */ default: ERROR (gettext ("\ section [%2zu] '%s' has unexpected type %d for an executable section\n"), @@ -4305,7 +4307,7 @@ section [%2d] '%s': unknown core file note type %" PRIu32 if (nhdr.n_namesz == sizeof "Linux" && !memcmp (data->d_buf + name_offset, "Linux", sizeof "Linux")) break; - + /* Fallthrough */ default: if (shndx == 0) ERROR (gettext ("\ diff --git a/src/objdump.c b/src/objdump.c index 1afcd573..f84513ca 100644 --- a/src/objdump.c +++ b/src/objdump.c @@ -234,7 +234,9 @@ parse_opt (int key, char *arg, program_invocation_short_name); exit (EXIT_FAILURE); } - + /* We only use this for checking the number of arguments, we don't + actually want to consume them. */ + /* Fallthrough */ default: return ARGP_ERR_UNKNOWN; } diff --git a/tests/ChangeLog b/tests/ChangeLog index 3d34778b..5a9d5372 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2016-11-02 Mark Wielaard <mjw@redhat.com> + + * backtrace-data.c (thread_callback): Add explicit break after error. + * backtrace.c (callback_verify): Change PASSTHRU to FALLTHRU. + 2016-10-22 Kevin Cernekee <cernekee@chromium.org> * Makefile.am (TESTS): Add run-unstrip-test4.sh. diff --git a/tests/backtrace-data.c b/tests/backtrace-data.c index bc5ceba0..b7158dae 100644 --- a/tests/backtrace-data.c +++ b/tests/backtrace-data.c @@ -250,6 +250,7 @@ thread_callback (Dwfl_Thread *thread, void *thread_arg __attribute__ ((unused))) break; case -1: error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1)); + break; default: abort (); } diff --git a/tests/backtrace.c b/tests/backtrace.c index 2440ab34..1ff6353c 100644 --- a/tests/backtrace.c +++ b/tests/backtrace.c @@ -123,7 +123,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, assert (symname2 == NULL || strcmp (symname2, "jmp") != 0); break; } - /* PASSTHRU */ + /* FALLTHRU */ case 4: assert (symname != NULL && strcmp (symname, "stdarg") == 0); break; |