Use DIAG_OFF_FLEX/DIAG_ON_FLEX more consistently.
authorGuy Harris <guy@alum.mit.edu>
Fri, 16 Feb 2018 11:15:32 +0000 (03:15 -0800)
committerGuy Harris <guy@alum.mit.edu>
Fri, 16 Feb 2018 19:54:16 +0000 (19:54 +0000)
Add warning C4267 (size_t to int conversion) with MSVC to DIAG_OFF_FLEX.

Addd -Wshorten-64-to-32 with Clang and GCC to DIAG_OFF_FLEX.

Don't explicitly use #pragma to turn off warnings; use DIAG_OFF_FLEX for
all of them.

If we use DIAG_OFF_FLEX, use DIAG_ON_FLEX, even if we have no section of
entirely included code at the end.

Change-Id: Ibfd44e8954704e9a8bcb1bd8e54f31d28357fffb
Reviewed-on: https://code.wireshark.org/review/25817
Petri-Dish: Guy Harris <guy@alum.mit.edu>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
epan/diam_dict.l
epan/dtd_parse.l
epan/uat_load.l
plugins/epan/wimaxasncp/wimaxasncp_dict.l
text2pcap-scanner.l
ui/text_import_scanner.l
wiretap/ascend_scanner.l
wiretap/k12text.l
ws_diag_control.h

index 5d1a31e39d48abe97c2953221393088721f9fb47..44e9d910d1c364405277855636b468b9aeceec38 100644 (file)
@@ -1,12 +1,6 @@
 %top {
 /* Include this before everything else, for various large-file definitions */
 #include "config.h"
-
-// warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4267)
-#endif
 }
 
 /*
 #include <epan/to_str.h>
 #include <wsutil/file_util.h>
 
-DIAG_OFF(sign-compare)
+/*
+ * Disable diagnostics in the code generated by Flex.
+ */
+DIAG_OFF_FLEX
 
 typedef struct entity_t {
        char* name;
@@ -626,14 +623,12 @@ description_attr description=\042
 
 <OUTSIDE>. ;
 
-
-
-
-
-
 %%
 
-DIAG_ON(sign-compare)
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
 
 static int debugging  = 0;
 
index 158a1f0c4fec78c2c442a79546ae9a3b765cbbf4..e9bc00ed97fa5013d88c3c78147bc189d373638c 100644 (file)
@@ -1,12 +1,6 @@
 %top {
 /* Include this before everything else, for various large-file definitions */
 #include "config.h"
-
-// warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4267)
-#endif
 }
 
 /*
 #include "dtd_grammar.h"
 #include "dtd_parse.h"
 
-DIAG_OFF(sign-compare)
+/*
+ * Disable diagnostics in the code generated by Flex.
+ */
+DIAG_OFF_FLEX
 
        struct _proto_xmlpi_attr {
                const gchar* name;
@@ -352,7 +349,10 @@ squoted        ['][^\']*[']
 
 %%
 
-DIAG_ON(sign-compare)
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
 
 static dtd_token_data_t* new_token(gchar* text, gchar* location) {
        dtd_token_data_t* t = g_new(dtd_token_data_t,1);
index d645d0b4dc279a2b54e0c0283f5eebd60567bb41..981a3621399188a5eedc5eb8c63dc13a4eaafe93 100644 (file)
@@ -1,12 +1,6 @@
 %top {
 /* Include this before everything else, for various large-file definitions */
 #include "config.h"
-
-// warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4267)
-#endif
 }
 
 /*
index dab2836a93217d8098dee52b4d8f4859e45101d8..3dc4dbf887dcf0b196796e259ffe7006ed2ba833 100644 (file)
@@ -1,12 +1,6 @@
 %top {
 /* Include this before everything else, for various large-file definitions */
 #include "config.h"
-
-// warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4267)
-#endif
 }
 
 /*
 
 #include "wimaxasncp_dict.h"
 
-DIAG_OFF(sign-compare)
+/*
+ * Disable diagnostics in the code generated by Flex.
+ */
+DIAG_OFF_FLEX
 
 typedef struct entity_t {
        gchar *name;
@@ -514,14 +511,12 @@ since_attr since=\042
 
 <OUTSIDE>. ;
 
-
-
-
-
-
 %%
 
-DIAG_ON(sign-compare)
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
 
 static int debugging  = 0;
 
index b4024b162d2703460991d096fbe1a53931a4f451..c233999d4de8e07f457b9bd9f659b54aafa291fa 100644 (file)
@@ -106,3 +106,10 @@ eol \r?\n\r?
        if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; }
 {comment}         { if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; }
 {text}            { if (parse_token(T_TEXT, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; }
+
+%%
+
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
index 5e7d65048e71de3f9a54c10557680ae378bda574..70255e6f777403dcd4ea4284dfae997bc870628c 100644 (file)
@@ -135,3 +135,10 @@ eol \r?\n\r?
 {text}            { parse_token(T_TEXT, yytext); }
 
 <<EOF>>           { write_current_packet(); yyterminate(); }
+
+%%
+
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
index 0fb90184da46a52742f696893f7f86886b29cf28..133f0dfc5ae40da12fd8268dcf73ba8d4aa8d3f8 100644 (file)
 #include "ascend.h"
 #include "file_wrappers.h"
 
-DIAG_OFF(sign-compare)
+/*
+ * Disable diagnostics in the code generated by Flex.
+ */
+DIAG_OFF_FLEX
 
 #define YY_INPUT(buf,result,max_size) { \
        ascend_state_t *parser_state = ascendget_extra(yyscanner); \
@@ -372,3 +375,10 @@ task:|task|at|time:|octets { return KEYWORD; }
 <<EOF>> { yyterminate(); }
 
 (.|\n) ;
+
+%%
+
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
index 5451b5eff843b9ccdd12987246090382cd6038e7..be5d51379f914511e76420b907f20e876d15a211 100644 (file)
 #define YY_NO_UNISTD_H
 #endif
 
-DIAG_OFF(sign-compare)
+/*
+ * Disable diagnostics in the code generated by Flex.
+ */
+DIAG_OFF_FLEX
 
 /*
  * State kept by the scanner.
@@ -233,7 +236,10 @@ hdlc HDLC
 
 %%
 
-DIAG_ON(sign-compare)
+/*
+ * Turn diagnostics back on, so we check the code that we've written.
+ */
+DIAG_ON_FLEX
 
 /* Fill in pkthdr */
 
index 155c143077322dfccd90c11008137a4876109825..e3ee28ed9c16144400a194657619f7afa9efc382 100644 (file)
@@ -100,15 +100,49 @@ extern "C" {
  * generated by that version of Flex triggers?
  */
 #if defined(_MSC_VER)
+  /*
+   * Suppress:
+   *
+   *   warning C4018: signed/unsigned mismatch
+   *   warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
+   */
   #define DIAG_OFF_FLEX \
     __pragma(warning(push)) \
-    __pragma(warning(disable:4018))
+    __pragma(warning(disable:4018)) \
+    __pragma(warning(disable:4267))
   #define DIAG_ON_FLEX __pragma(warning(pop))
 #else
-  #define DIAG_OFF_FLEX \
-    DIAG_OFF(sign-compare)
-  #define DIAG_ON_FLEX \
-    DIAG_ON(sign-compare)
+  /*
+   * Suppress:
+   *
+   *   -Wsigned-compare warnings
+   *   -Wshorten-64-to-32 warnings, if the compiler *has* -Wshorten-64-to-32
+   *
+   * We use DIAG_OFF() and DIAG_ON(), so we only use features that the
+   * compiler supports.
+   *
+   * We disable -Wshorten-64-to-32 if we're using Clang, or if __APPLE__
+   * is defined; that option was originally added to an Apple version of
+   * GCC, and at least some versions of Clang support it - given that
+   * the Clang work started at Apple, it may be in all versions of Clang.
+   *
+   * (Does no version of GCC or Clang support the same generic "you're
+   * narrowing a value, and you didn't throw in a cast to assert that
+   * you know what you're doing" warning that MSVC does?)
+   */
+  #if defined(__clang__) || defined(__APPLE__)
+    #define DIAG_OFF_FLEX \
+      DIAG_OFF(sign-compare) \
+      DIAG_OFF(shorten-64-to-32)
+    #define DIAG_ON_FLEX \
+      DIAG_ON(shorten-64-to-32) \
+      DIAG_ON(sign-compare)
+  #else
+    #define DIAG_OFF_FLEX \
+      DIAG_OFF(sign-compare)
+    #define DIAG_ON_FLEX \
+      DIAG_ON(sign-compare)
+  #endif
 #endif
 
 /*