]> The Tcpdump Group git mirrors - libpcap/commitdiff
Add -Wmissing-noreturn to compiler warnings and fix all fixable warnings.
authorJoerg Mayer <[email protected]>
Wed, 28 Mar 2018 22:32:06 +0000 (15:32 -0700)
committerGuy Harris <[email protected]>
Wed, 28 Mar 2018 22:32:06 +0000 (15:32 -0700)
Also suppress the one non-fixable warning:
build/scanner.c:5020:1: warning: function 'yy_fatal_error' could be
declared with attribute 'noreturn' [-Wmissing-noreturn]

Signed-off-by: Joerg Mayer <[email protected]>
CMakeLists.txt
aclocal.m4
configure
diag-control.h
gencode.c
gencode.h
grammar.y
rpcapd/rpcapd.c

index ba2244ec9f8a62e06e5cae2ba744da7b5f7c356f..16211ac4c69fc02fe472b8d4738a34da0e76777d 100644 (file)
@@ -1671,6 +1671,7 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.devel OR EXISTS ${CMAKE_BINARY_DIR}/.devel)
         check_and_add_compiler_option(-Wused-but-marked-unused)
         check_and_add_compiler_option(-Wdocumentation)
         check_and_add_compiler_option(-Wcomma)
+        check_and_add_compiler_option(-Wmissing-noreturn)
     endif()
 endif()
 
index 788b20a85bc7fa278f2c2eac0270790025c34fe6..f4dd40ca7aef8ee9d94fcd600b99991f69666a69 100644 (file)
@@ -849,6 +849,7 @@ AC_DEFUN(AC_LBL_DEVEL,
                    AC_LBL_CHECK_COMPILER_OPT($1, -Wused-but-marked-unused)
                    AC_LBL_CHECK_COMPILER_OPT($1, -Wdocumentation)
                    AC_LBL_CHECK_COMPILER_OPT($1, -Wcomma)
+                   AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-noreturn)
            fi
            AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
            #
index e60d7f5ad556b4b8b06a68b864de06236a58d29e..1eb5ad354aaea42e362372c446a7a8e10858d048 100755 (executable)
--- a/configure
+++ b/configure
@@ -8776,6 +8776,49 @@ else
 $as_echo "no" >&6; }
                CFLAGS="$save_CFLAGS"
 
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the -Wmissing-noreturn option" >&5
+$as_echo_n "checking whether the compiler supports the -Wmissing-noreturn option... " >&6; }
+       save_CFLAGS="$CFLAGS"
+       if expr "x-Wmissing-noreturn" : "x-W.*" >/dev/null
+       then
+           CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error -Wmissing-noreturn"
+       elif expr "x-Wmissing-noreturn" : "x-f.*" >/dev/null
+       then
+           CFLAGS="$CFLAGS -Werror -Wmissing-noreturn"
+       elif expr "x-Wmissing-noreturn" : "x-m.*" >/dev/null
+       then
+           CFLAGS="$CFLAGS -Werror -Wmissing-noreturn"
+       else
+           CFLAGS="$CFLAGS -Wmissing-noreturn"
+       fi
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+return 0
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               CFLAGS="$save_CFLAGS"
+               V_CCOPT="$V_CCOPT -Wmissing-noreturn"
+
+else
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               CFLAGS="$save_CFLAGS"
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
index 6c2d4f454d5028d2abfc566a21ce614413cbc653..751faa083c1144c84ae46520bdbd2fff78cc54e6 100644 (file)
@@ -75,7 +75,8 @@
     #define DIAG_OFF_FLEX \
       PCAP_DO_PRAGMA(clang diagnostic push) \
       PCAP_DO_PRAGMA(clang diagnostic ignored "-Wsign-compare") \
-      PCAP_DO_PRAGMA(clang diagnostic ignored "-Wdocumentation")
+      PCAP_DO_PRAGMA(clang diagnostic ignored "-Wdocumentation") \
+      PCAP_DO_PRAGMA(clang diagnostic ignored "-Wmissing-noreturn")
     #define DIAG_ON_FLEX \
       PCAP_DO_PRAGMA(clang diagnostic pop)
   #elif PCAP_IS_AT_LEAST_GNUC_VERSION(4,6)
index 5846c4f9999722f34be5daa84b096fe9dc2a6e8e..642c068a52d952affe5096d80a705ec6684b2dab 100644 (file)
--- a/gencode.c
+++ b/gencode.c
@@ -417,7 +417,7 @@ struct _compiler_state {
        int cur_chunk;
 };
 
-void
+void PCAP_NORETURN
 bpf_syntax_error(compiler_state_t *cstate, const char *msg)
 {
        bpf_error(cstate, "syntax error in filter expression: %s", msg);
@@ -425,7 +425,7 @@ bpf_syntax_error(compiler_state_t *cstate, const char *msg)
 }
 
 /* VARARGS */
-void
+void PCAP_NORETURN
 bpf_error(compiler_state_t *cstate, const char *fmt, ...)
 {
        va_list ap;
@@ -646,7 +646,7 @@ gen_retblk(compiler_state_t *cstate, int v)
        return b;
 }
 
-static inline void
+static inline PCAP_NORETURN  void
 syntax(compiler_state_t *cstate)
 {
        bpf_error(cstate, "syntax error in filter expression");
index 58828ecd5854b3f43eb28b4fed251a83278e0f33..f1bad215182f32f8bb0b42a412f45ff0f1afa69d 100644 (file)
--- a/gencode.h
+++ b/gencode.h
@@ -369,7 +369,7 @@ struct icode {
 };
 
 void bpf_optimize(compiler_state_t *, struct icode *ic);
-void bpf_syntax_error(compiler_state_t *, const char *);
+void PCAP_NORETURN bpf_syntax_error(compiler_state_t *, const char *);
 void PCAP_NORETURN bpf_error(compiler_state_t *, const char *, ...)
     PCAP_PRINTFLIKE(2, 3);
 
index 5aa6f38b78c3d6b2ee66951d5d16868b8c45e448..8af53e8a552dad3fb5f403c608948914d80763b9 100644 (file)
--- a/grammar.y
+++ b/grammar.y
@@ -199,7 +199,7 @@ str2tok(const char *str, const struct tok *toks)
 
 static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF };
 
-static void
+static PCAP_NORETURN void
 yyerror(void *yyscanner, compiler_state_t *cstate, const char *msg)
 {
        bpf_syntax_error(cstate, msg);
index d35940819a88bcbcf97fb2f357f6a61861aa6a23..b7e026bc5394e7f11d5ae3cf40fa83d163f63a69 100755 (executable)
@@ -459,7 +459,7 @@ void main_startup(void)
        - when we're running in console and are terminated with ^C;
        - on UN*X, when we're terminated with SIGTERM.
 */
-static void main_terminate(int sign)
+static PCAP_NORETURN void main_terminate(int sign)
 {
        SOCK_ASSERT(PROGRAM_NAME " is closing.\n", 1);