aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dfilter
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-11-19 22:52:09 +0000
committerJoão Valverde <j@v6e.pt>2022-11-20 10:11:27 +0000
commit79c3a77752bfee8e57cac3796d5e5ef1987e5612 (patch)
treedd903014caf5145faf5b220afa435d1b653044cf /epan/dfilter
parentc4ca4312c1c17cf48a1e956d0cd2e6ab5e04d4f2 (diff)
Add macros to control lemon diagnostics
Rename flex macros using parenthesis (mostly a style issue): DIAG_OFF_FLEX -> DIAG_OFF_FLEX() DIAG_ON_FLEX -> DIAG_ON_FLEX() Use the same kind of construct with lemon generated code using DIAG_OFF_LEMON() and DIAG_ON_LEMON(). Use %include and %code directives to enforce the desired order with generated code in the middle in between pragmas. Fix a clang-specific pragma to use DIAG_OFF_CLANG(). DIAG_OFF(unreachable-code) -> DIAG_OFF_CLANG(unreachable-code). Apparently GCC is ignoring the -Wunreachable flag, that's why it did not trigger an unknown pragma warning. From [1}: The -Wunreachable-code has been removed, because it was unstable: it relied on the optimizer, and so different versions of gcc would warn about different code. The compiler still accepts and ignores the command line option so that existing Makefiles are not broken. In some future release the option will be removed entirely. - Ian [1] https://gcc.gnu.org/legacy-ml/gcc-help/2011-05/msg00360.html
Diffstat (limited to 'epan/dfilter')
-rw-r--r--epan/dfilter/grammar.lemon9
-rw-r--r--epan/dfilter/scanner.l4
2 files changed, 7 insertions, 6 deletions
diff --git a/epan/dfilter/grammar.lemon b/epan/dfilter/grammar.lemon
index 3815587c57..d6caa0d927 100644
--- a/epan/dfilter/grammar.lemon
+++ b/epan/dfilter/grammar.lemon
@@ -15,9 +15,6 @@
#include "grammar.h"
-/* Generated lemon code warns on this. */
-DIAG_OFF(unreachable-code)
-
#ifdef _WIN32
#pragma warning(disable:4671)
#endif
@@ -27,7 +24,11 @@ new_function(dfwork_t *dfw, stnode_t *node);
#define FAIL(dfw, node, ...) dfilter_fail(dfw, stnode_location(node), __VA_ARGS__)
-/* End of C code */
+DIAG_OFF_LEMON()
+} /* end of %include */
+
+%code {
+DIAG_ON_LEMON()
}
/* Parser Information */
diff --git a/epan/dfilter/scanner.l b/epan/dfilter/scanner.l
index e1d428c032..b90f1a28b3 100644
--- a/epan/dfilter/scanner.l
+++ b/epan/dfilter/scanner.l
@@ -75,7 +75,7 @@
/*
* Disable diagnostics in the code generated by Flex.
*/
-DIAG_OFF_FLEX
+DIAG_OFF_FLEX()
stnode_t *df_lval;
@@ -475,7 +475,7 @@ hyphen-bytes {hex2}(-{hex2})+
/*
* Turn diagnostics back on, so we check the code that we've written.
*/
-DIAG_ON_FLEX
+DIAG_ON_FLEX()
static void
_update_location(df_scanner_state_t *state, size_t len)