Message ID | 20180903203316.16183-8-miguel.ojeda.sandonis@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | Compiler Attributes | expand |
On Mon, Sep 03, 2018 at 10:33:11PM +0200, Miguel Ojeda wrote: > Sparse knows about a few more attributes now, so we can remove > the __CHECKER__ conditions from them (which, in turn, allow us > to move some of them later on to compiler_attributes.h). > > * assume_aligned: since sparse's commit ffc860b ("sparse: > ignore __assume_aligned__ attribute"), included in 0.5.1 > > * error: since sparse's commit 0a04210 ("sparse: Add 'error' > to ignored attributes"), included in 0.5.0 > > * hotpatch: since sparse's commit 6043210 ("sparse/parse.c: > ignore hotpatch attribute"), included in 0.5.1 > > * warning: since sparse's commit 977365d ("Avoid "attribute > 'warning': unknown attribute" warning"), included in 0.4.2 Hi, I hadn't noticed in the previous version but I see now that hotpatch & assume_aligned is only available since sparse 0.5.1 which is only 13 months old. It would be great if everyone use a recent version but I fear that a lot of people still use something less recent. v0.5.0 should be OK, though, it's more than 5 years old. Sorry for not having noticed this earlier. -- Luc
On Wed, Sep 05, 2018 at 08:20:39PM +0200, Luc Van Oostenryck wrote: > On Mon, Sep 03, 2018 at 10:33:11PM +0200, Miguel Ojeda wrote: > > Sparse knows about a few more attributes now, so we can remove > > the __CHECKER__ conditions from them (which, in turn, allow us > > to move some of them later on to compiler_attributes.h). > > > > * assume_aligned: since sparse's commit ffc860b ("sparse: > > ignore __assume_aligned__ attribute"), included in 0.5.1 > > > > * error: since sparse's commit 0a04210 ("sparse: Add 'error' > > to ignored attributes"), included in 0.5.0 > > > > * hotpatch: since sparse's commit 6043210 ("sparse/parse.c: > > ignore hotpatch attribute"), included in 0.5.1 > > > > * warning: since sparse's commit 977365d ("Avoid "attribute > > 'warning': unknown attribute" warning"), included in 0.4.2 > > Hi, > > I hadn't noticed in the previous version but I see now that hotpatch > & assume_aligned is only available since sparse 0.5.1 which is only > 13 months old. It would be great if everyone use a recent version > but I fear that a lot of people still use something less recent. > v0.5.0 should be OK, though, it's more than 5 years old. > > Sorry for not having noticed this earlier. Unlike GCC, I don't think it's at all unreasonable to assume a *relatively* recent version of Sparse. (Once we start assuming a version with __has_attribute support, this will get even easier to handle.)
On Wed, Sep 5, 2018 at 12:30 PM Josh Triplett <josh@joshtriplett.org> wrote: > > Unlike GCC, I don't think it's at all unreasonable to assume a > *relatively* recent version of Sparse. Yeah, sparse is small and easy to build and installs in your own ~/bin/ directory by default. Anybody who can build the kernel can trivially fetch and build sparse in seconds. It literally builds from scratch in 2.5s for me. I don't think you even need any development packages that you don't already need for the kernel. Just a C compiler and libc, basically. Sure, some parts of sparse can use things like libxml and llvm and even gtk, but that's for functionality that the "check kernel with sparse" doesn't even need, and the makefile will automatically disable them if you don't have it installed. So if people are having trouble, just point them to the sparse repo, and tell them that git clone ... cd sparse make -j8 make install fixes the issue in 30 seconds. Although maybe I'm misstating just how easy sparse is to build and install, and people have had problems? Linus
On Wed, Sep 05, 2018 at 12:40:26PM -0700, Linus Torvalds wrote: > On Wed, Sep 5, 2018 at 12:30 PM Josh Triplett <josh@joshtriplett.org> wrote: > > > > Unlike GCC, I don't think it's at all unreasonable to assume a > > *relatively* recent version of Sparse. > > Yeah, sparse is small and easy to build and installs in your own > ~/bin/ directory by default. > > Anybody who can build the kernel can trivially fetch and build sparse > in seconds. It literally builds from scratch in 2.5s for me. > > I don't think you even need any development packages that you don't > already need for the kernel. Just a C compiler and libc, basically. > > Sure, some parts of sparse can use things like libxml and llvm and > even gtk, but that's for functionality that the "check kernel with > sparse" doesn't even need, and the makefile will automatically disable > them if you don't have it installed. > > So if people are having trouble, just point them to the sparse repo, > and tell them that > > git clone ... > cd sparse > make -j8 > make install > > fixes the issue in 30 seconds. > > Although maybe I'm misstating just how easy sparse is to build and > install, and people have had problems? > I never heard of anyone having a problem to build sparse but I guess that a lot of people just use their distro's version. That said, I'm of course, all for encouraging people to upgrad to a recent version. -- Luc
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 3b32bbfa5a49..1ca6a51cfaa9 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -76,14 +76,12 @@ #define __compiletime_object_size(obj) __builtin_object_size(obj, 0) -#ifndef __CHECKER__ #define __compiletime_warning(message) __attribute__((__warning__(message))) #define __compiletime_error(message) __attribute__((__error__(message))) -#ifdef LATENT_ENTROPY_PLUGIN +#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__) #define __latent_entropy __attribute__((latent_entropy)) #endif -#endif /* __CHECKER__ */ /* * calling noreturn functions, __builtin_unreachable() and __builtin_trap() @@ -131,7 +129,7 @@ /* gcc version specific checks */ -#if GCC_VERSION >= 40900 && !defined(__CHECKER__) +#if GCC_VERSION >= 40900 /* * __assume_aligned(n, k): Tell the optimizer that the returned * pointer can be assumed to be k modulo n. The second argument is diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 165b1d5683ed..4030a2940d6b 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -357,11 +357,7 @@ static inline void *offset_to_ptr(const int *off) compiletime_assert(__native_word(t), \ "Need native word sized stores/loads for atomicity.") -#ifdef __CHECKER__ -#define __must_be_array(a) 0 -#else /* &a[0] degrades to a pointer: a different type from an array */ #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) -#endif #endif /* __LINUX_COMPILER_H */ diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index f182f2ef3227..65b10b1e2a59 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -217,7 +217,7 @@ struct ftrace_likely_data { #define __must_check #endif -#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__) +#if defined(CC_USING_HOTPATCH) #define notrace __attribute__((hotpatch(0, 0))) #else #define notrace __attribute__((__no_instrument_function__))