diff mbox series

predefine: add a macro telling about named address spaces

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

Commit Message

Luc Van Oostenryck June 16, 2020, 12:50 a.m. UTC
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(+)

Comments

Linus Torvalds June 16, 2020, 7:13 p.m. UTC | #1
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
Luc Van Oostenryck June 16, 2020, 8:51 p.m. UTC | #2
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 mbox series

Patch

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);