From: Nathan Chancellor <natechancellor@gmail.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: akpm@linux-foundation.org, arnd@arndb.de, paul.burton@mips.com,
christophe.leroy@c-s.fr, shorne@gmail.com,
yamada.masahiro@socionext.com, keescook@chromium.org,
mingo@kernel.org, gregkh@linuxfoundation.org, tglx@linutronix.de,
rdunlap@infradead.org, bp@suse.de, neilb@suse.com,
linux-kernel@vger.kernel.org, aryabinin@virtuozzo.com,
dwmw@amazon.co.uk, sandipan@linux.vnet.ibm.com,
linux@rasmusvillemoes.dk, paullawrence@google.com,
andreyknvl@google.com, will.deacon@arm.com,
ghackmann@android.com, stable@vger.kernel.org,
ghackmann@google.com, mka@chromium.org, jpoimboe@redhat.com,
wvw@google.com, avagin@openvz.org
Subject: Re: [PATCH v2 1/2] compiler-clang.h: Add CLANG_VERSION and __diag macros
Date: Mon, 30 Jul 2018 16:25:54 -0700 [thread overview]
Message-ID: <20180730232554.GA16996@flashbox> (raw)
In-Reply-To: <20180730213412.242849-2-ndesaulniers@google.com>
On Mon, Jul 30, 2018 at 02:34:11PM -0700, Nick Desaulniers wrote:
> These are needed for doing proper version checks, though feature
> detection via __has_attribute, __has_builtin, and __has_feature should
> be preferred, see:
> https://clang.llvm.org/docs/LanguageExtensions.html#feature-checking-macros
>
> Also adds __diag support, for generating compiler version specific
> _Pragma()'s.
>
> __diag support based on commit 8793bb7f4a9d ("kbuild: add macro for
> controlling warnings to linux/compiler.h")
>
> Cc: stable@vger.kernel.org # 4.17, 4.14, 4.9, 4.4
> Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-and-reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> ---
> include/linux/compiler-clang.h | 19 +++++++++++++++++++
> include/linux/compiler_types.h | 4 ++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
> index 7087446c24c8..9442e07a361e 100644
> --- a/include/linux/compiler-clang.h
> +++ b/include/linux/compiler-clang.h
> @@ -7,6 +7,10 @@
> * for Clang compiler
> */
>
> +#define CLANG_VERSION (__clang_major__ * 10000 \
> + + __clang_minor__ * 100 \
> + + __clang_patchlevel__)
> +
I know this was done to be consistent with GCC_VERSION but certain
toolchains may set the patch level to the SVN revision (at least that's
what it appears to be) like AOSP's clang-4053586, which would make
CLANG_VERSION 350080. For this particular warning, it doesn't matter
since Clang has supported it since 2011 and Clang 5.0 isn't supported
in this tree anyways but maybe relying on just __clang_major__ below
is more ideal.
Other than that, patch functions just as it should.
> #ifdef uninitialized_var
> #undef uninitialized_var
> #define uninitialized_var(x) x = *(&(x))
> @@ -46,3 +50,18 @@
> __has_builtin(__builtin_sub_overflow)
> #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1
> #endif
> +
> +#define __diag_str1(s) #s
> +#define __diag_str(s) __diag_str1(s)
> +#define __diag(s) _Pragma(__diag_str(clang diagnostic s))
> +#define __diag_CLANG_ignore ignored
> +#define __diag_CLANG_warn warning
> +#define __diag_CLANG_error error
> +#define __diag_CLANG(version, severity, s) \
> + __diag_CLANG_ ## version(__diag_CLANG_ ## severity s)
> +
> +#if CLANG_VERSION >= 70000
> +#define __diag_CLANG_7(s) __diag(s)
> +#else
> +#define __diag_CLANG_7(s)
> +#endif
> diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
> index a8ba6b04152c..a04e6bd63476 100644
> --- a/include/linux/compiler_types.h
> +++ b/include/linux/compiler_types.h
> @@ -279,6 +279,10 @@ struct ftrace_likely_data {
> #define __diag_GCC(version, severity, string)
> #endif
>
> +#ifndef __diag_CLANG
> +#define __diag_CLANG(version, severity, string)
> +#endif
> +
> #define __diag_push() __diag(push)
> #define __diag_pop() __diag(pop)
>
> --
> 2.18.0.345.g5c9ce644c3-goog
>
next prev parent reply other threads:[~2018-07-30 23:26 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-30 21:34 [PATCH v2 0/2] CLANG_VERSION and __diag macros Nick Desaulniers
2018-07-30 21:34 ` [PATCH v2 1/2] compiler-clang.h: Add " Nick Desaulniers
2018-07-30 23:25 ` Nathan Chancellor [this message]
2018-08-31 21:50 ` Nick Desaulniers
2018-08-31 22:16 ` Miguel Ojeda
2018-07-30 21:34 ` [PATCH v2 2/2] kernel.h: Disable -Wreturn-stack-address for _THIS_IP_ Nick Desaulniers
2018-07-30 23:25 ` Nathan Chancellor
2018-07-30 23:25 ` Nathan Chancellor
2018-07-31 10:27 ` kbuild test robot
2018-07-31 16:48 ` Nick Desaulniers
2018-07-31 17:02 ` Kees Cook
2018-07-31 17:09 ` Nick Desaulniers
2018-07-31 18:58 ` Nick Desaulniers
2018-07-31 21:10 ` Nick Desaulniers
2018-07-31 17:02 ` Nathan Chancellor
2018-07-31 13:53 ` kbuild test robot
2018-07-31 16:55 ` Nick Desaulniers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180730232554.GA16996@flashbox \
--to=natechancellor@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@google.com \
--cc=arnd@arndb.de \
--cc=aryabinin@virtuozzo.com \
--cc=avagin@openvz.org \
--cc=bp@suse.de \
--cc=christophe.leroy@c-s.fr \
--cc=dwmw@amazon.co.uk \
--cc=ghackmann@android.com \
--cc=ghackmann@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mingo@kernel.org \
--cc=mka@chromium.org \
--cc=ndesaulniers@google.com \
--cc=neilb@suse.com \
--cc=paul.burton@mips.com \
--cc=paullawrence@google.com \
--cc=rdunlap@infradead.org \
--cc=sandipan@linux.vnet.ibm.com \
--cc=shorne@gmail.com \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=will.deacon@arm.com \
--cc=wvw@google.com \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.