[Cocci] Parse error with genl-const.cocci
johannes at sipsolutions.net
Fri Dec 1 09:27:39 CET 2017
Looks like you made a really deep investigation here - awesome, thanks
for doing that!
On Thu, 2017-11-30 at 21:43 -0800, Remington Furman wrote:
> Full log using genl-const.cocci
> init_defs_builtins: /usr/local/bin/../lib/coccinelle/standard.h
> meta: parse error:
> File "./patches/0027-genl-const/genl-const.cocci", line 2, column 10,
> charpos = 13
> around = '__genl_const',
> whole content = attribute __genl_const;
> [...snip callstack...]
FWIW, the patch is pretty simple:
-const struct genl_multicast_group
+__genl_const struct genl_multicast_group
-const struct genl_ops
+__genl_const struct genl_ops
(yes, that's the full patch)
> This is very similar to this problem:
> The conclusion of that thread is that the --integrate workflow is
> no longer supported.
> However, I am not using --integrate, and I am still getting
> errors about parsing '__genl_const'.
Yeah this --integrate is unrelated to the problem - the problem is that
spatch can't parse this patch (any more).
> Is that a bug in the patch
> or possibly a regression in spatch?
I think it's a regression in spatch.
> I've tried v4.14-rc2 also,
> but nothing older.
That's a kernel version so not really relevant - spatch doesn't even
attempt to apply the changes since it can't parse them.
> This page has a lot of great example info, and suggested that it
> could be a problem with my version of spatch. Specifically, that
> I was missing the menhir and libmenhir-ocaml-dev packages when
> building Coccinelle and a rebuild should help.
That I don't know - I've never built spatch myself.
> Unfortunately, I still have the same errors after running make
> distclean and rebuilding.
> I have:
> coccinelle $ git describe --tags
> coccinelle $ spatch --version
> spatch version 1.0.6-00365-gd73c6e6 compiled with OCaml version 4.01.0
> Flags passed to the configure script: [none]
> OCaml scripting support: yes
> Python scripting support: yes
> Syntax of regular expresssions: PCRE
That seems reasonable as far as configuration is concerned.
> I found this patch which describes how older versions can't
> handle the __genl_const changes (20150209):
> But, I also see commit 748116c8 from shortly after (20150507)
> which introduced genl-const.cocci and says only spatch 1.0.0-rc23
> is needed.
> I feel like I'm close to figuring this out, but would appreciate
> any help or pointers.
Yeah I think you're pretty close.
Can you try obtaining/building spatch 1.0.4? That definitely works for
me, so I think there's probably a regression in spatch somewhere
between 1.0.4 and the version that you're running.
More information about the Cocci