Message ID | 20200616005012.66141-1-luc.vanoostenryck@gmail.com (mailing list archive) |
---|---|
State | Rejected, archived |
Headers | show |
Series | predefine: add a macro telling about named address spaces | expand |
On Mon, Jun 15, 2020 at 5:50 PM Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote: > > Sparse supports named address spaces since v0.6.0-rc1. > This gives much nicer warnings ('... __user' instead of '... <asn:1>') > but this featres is not yet used in the kernel since it could be > a problem for people using an older version of Sparse. Actually, I think it's more that nobody has sent a tested patch. I don't think it's a big burden to say "you need a newer version of sparse" for kernel checkers, and in fact a number of the problems people report then get answered with "update your sparse version" anyway for other reasons. In fact, I'd personally like to just make the kernel use _Generic() everywhere now that we started getting our toes wet, but the fact that we would have to require gcc-4.9 (instead of gcc-4.8 which is currently the minimum version) is holding us back. So I'd be perfectly happy to take a patch to do the ASN names, and to remove the __CHECKER__ thing that holds us back from using _Generic() with sparse. And just document that you need to have a recent enough release.. Linus
On Tue, Jun 16, 2020 at 12:13:18PM -0700, Linus Torvalds wrote: > On Mon, Jun 15, 2020 at 5:50 PM Luc Van Oostenryck > <luc.vanoostenryck@gmail.com> wrote: > > > > Sparse supports named address spaces since v0.6.0-rc1. > > This gives much nicer warnings ('... __user' instead of '... <asn:1>') > > but this featres is not yet used in the kernel since it could be > > a problem for people using an older version of Sparse. > > Actually, I think it's more that nobody has sent a tested patch. Yes, I should have done this many months ago. I admit that it bothers me when people complain that something doesn't work with sparse and it's just that they using an old version (sometimes quite old). > I don't think it's a big burden to say "you need a newer version of > sparse" for kernel checkers, and in fact a number of the problems > people report then get answered with "update your sparse version" > anyway for other reasons. > > In fact, I'd personally like to just make the kernel use _Generic() > everywhere now that we started getting our toes wet, but the fact that > we would have to require gcc-4.9 (instead of gcc-4.8 which is > currently the minimum version) is holding us back. > > So I'd be perfectly happy to take a patch to do the ASN names, and to > remove the __CHECKER__ thing that holds us back from using _Generic() > with sparse. And just document that you need to have a recent enough > release.. OK. The one for the ASNs is already prepared anyway and I'll do the one for _Generic() tomorrow. -- Luc
diff --git a/lib.c b/lib.c index 951d400ea2fa..ebbcd3b150aa 100644 --- a/lib.c +++ b/lib.c @@ -1295,6 +1295,7 @@ static void predefined_ctype(const char *name, struct symbol *type, int flags) static void predefined_macros(void) { predefine("__CHECKER__", 0, "1"); + predefine("__SPARSE_HAS_NAMED_ADDRESS_SPACE__", 0, "1"); predefine("__GNUC__", 1, "%d", gcc_major); predefine("__GNUC_MINOR__", 1, "%d", gcc_minor); predefine("__GNUC_PATCHLEVEL__", 1, "%d", gcc_patchlevel);
Sparse supports named address spaces since v0.6.0-rc1. This gives much nicer warnings ('... __user' instead of '... <asn:1>') but this featres is not yet used in the kernel since it could be a problem for people using an older version of Sparse. So, add a define which can be used to check if named address spaces are supported or not. I should have done this a long time ago! Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- lib.c | 1 + 1 file changed, 1 insertion(+)