summaryrefslogtreecommitdiff
path: root/netdissect-stdinc.h
diff options
context:
space:
mode:
authorFrancois-Xavier Le Bail <devel.fx.lebail@orange.fr>2017-10-21 19:07:54 +0200
committerFrancois-Xavier Le Bail <devel.fx.lebail@orange.fr>2017-10-21 20:01:02 +0200
commit99b16dee903054c03f5949ee674b0344cbccf1cd (patch)
treef6cdcfa36e22814f431169bd82b504f2c75fa9e1 /netdissect-stdinc.h
parent0a2edb9d3f5157e8c321c2a9f645b71e70facab2 (diff)
downloadtcpdump-99b16dee903054c03f5949ee674b0344cbccf1cd.tar.gz
Fix the macros for controlling warnings
The current clang compilers also set __GNUC__ and __GNUC_MINOR__ thus we need to test the clang case before the GCC one. Moreover: Add DIAG_OFF_CLANG and DIAG_ON_CLANG macros for clang specific warnings. Add a comment.
Diffstat (limited to 'netdissect-stdinc.h')
-rw-r--r--netdissect-stdinc.h28
1 files changed, 23 insertions, 5 deletions
diff --git a/netdissect-stdinc.h b/netdissect-stdinc.h
index ab7ddcf9..a0c3fc21 100644
--- a/netdissect-stdinc.h
+++ b/netdissect-stdinc.h
@@ -421,7 +421,20 @@ struct in6_addr {
#define DIAG_JOINSTR(x,y) XSTRINGIFY(x ## y)
#define DIAG_DO_PRAGMA(x) _Pragma (#x)
-#if defined(__GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
+/*
+ * The current clang compilers also define __GNUC__ and __GNUC_MINOR__
+ * thus we need to test the clang case before the GCC one
+ */
+#if defined(__clang__)
+# if (__clang_major__ * 100) + __clang_minor__ >= 208
+# define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(clang diagnostic x)
+# define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
+# define DIAG_ON(x) DIAG_PRAGMA(pop)
+# else
+# define DIAG_OFF(x)
+# define DIAG_ON(x)
+# endif
+#elif defined(__GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
# define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(GCC diagnostic x)
# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
# define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
@@ -430,15 +443,20 @@ struct in6_addr {
# define DIAG_OFF(x) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
# define DIAG_ON(x) DIAG_PRAGMA(warning DIAG_JOINSTR(-W,x))
# endif
-#elif defined(__clang__) && ((__clang_major__ * 100) + __clang_minor__ >= 208)
-# define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(clang diagnostic x)
-# define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
-# define DIAG_ON(x) DIAG_PRAGMA(pop)
#else
# define DIAG_OFF(x)
# define DIAG_ON(x)
#endif
+/* Use for clang specific warnings */
+#ifdef __clang__
+# define DIAG_OFF_CLANG(x) DIAG_OFF(x)
+# define DIAG_ON_CLANG(x) DIAG_ON(x)
+#else
+# define DIAG_OFF_CLANG(x)
+# define DIAG_ON_CLANG(x)
+#endif
+
/*
* For dealing with APIs which are only deprecated in OSX (like the OpenSSL API)
*/