Coccinelle archive on lore.kernel.org
 help / color / Atom feed
* [Cocci] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer
@ 2020-02-05 13:03 Jaskaran Singh
  2020-02-05 13:03 ` [Cocci] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-05 13:03 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

This series is to address the type matching problem in Coccinelle.

Patch 1/2 is for aligning the C and Cocci AST so that
pointer to const pointer and its variants can be matched.

Patch 2/2 consists of a test case for matching a pointer to
const pointer and its variants.

 parsing_c/parser_c.mly      |    4 ++--
 parsing_c/pretty_print_c.ml |    6 ++++--
 tests/constptr.c            |    7 +++++++
 tests/constptr.cocci        |   19 +++++++++++++++++++
 tests/constptr.res          |    7 +++++++
 5 files changed, 39 insertions(+), 4 deletions(-)


_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Cocci] [PATCH 1/2] parsing_c: Align C AST and Cocci AST for pointer
  2020-02-05 13:03 [Cocci] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
@ 2020-02-05 13:03 ` " Jaskaran Singh
  2020-02-05 13:03 ` [Cocci] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants Jaskaran Singh
  2020-02-07  6:09 ` [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
  2 siblings, 0 replies; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-05 13:03 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

For a pointer, the C parser constructed an AST dissimilar from that
of the Cocci AST. This caused failures in matching with certain
pointer types. For example, for the following case:

char *1 const *2 id;

The C AST constructed would be:
const Pointer1 -> Pointer2 -> char

The Cocci AST constructed would be:
Pointer2 -> const Pointer1 -> char

Change the pointer rule in the C parser so that an AST similar to the
Cocci AST is constructed.

Make necessary changes in the C pretty printer so that the pointer type
is printed correctly.

Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
---
 parsing_c/parser_c.mly      | 4 ++--
 parsing_c/pretty_print_c.ml | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/parsing_c/parser_c.mly b/parsing_c/parser_c.mly
index 8d7b761e..4c74f15a 100644
--- a/parsing_c/parser_c.mly
+++ b/parsing_c/parser_c.mly
@@ -1333,14 +1333,14 @@ pointer:
  | tmul                   { (Ast_c.noattr,fun x -> mk_ty (Pointer x) [$1]) }
  | tmul pointer
      { let (attr,ptr) = $2 in
-       (attr,fun x -> mk_ty (Pointer (ptr x)) [$1]) }
+       (attr,fun x -> ptr (mk_ty (Pointer x) [$1])) }
  | tmul type_qualif_list
      { let (attr,tq) = $2 in
        (attr,fun x -> (tq.qualifD, mk_tybis (Pointer x) [$1]))}
  | tmul type_qualif_list pointer
      { let (attr1,tq) = $2 in
        let (attr2,ptr) = $3 in
-       (attr1@attr2,fun x -> (tq.qualifD, mk_tybis (Pointer (ptr x)) [$1])) }
+       (attr1@attr2,fun x -> ptr (tq.qualifD, mk_tybis (Pointer x) [$1])) }
 
 tmul:
    TMul { $1 }
diff --git a/parsing_c/pretty_print_c.ml b/parsing_c/pretty_print_c.ml
index a2e35588..40b89fe5 100644
--- a/parsing_c/pretty_print_c.ml
+++ b/parsing_c/pretty_print_c.ml
@@ -804,11 +804,12 @@ and pp_string_format (e,ii) =
              (FunctionType (return=void, params=int i) *)
           (*WRONG I THINK, use left & right function *)
           (* bug: pp_type_with_ident_rest None t;      print_ident ident *)
+          pp_type_left t;
           pr_elem i;
           iiqu +> List.iter pr_elem; (* le const est forcement apres le '*' *)
           if iiqu <> [] || get_comments_after i <> []
           then pr_space();
-          pp_type_with_ident_rest ident t attrs Ast_c.noattr;
+          print_ident ident
 
       (* ugly special case ... todo? maybe sufficient in practice *)
       | (ParenType ttop, [i1;i2]) ->
@@ -885,11 +886,12 @@ and pp_string_format (e,ii) =
       match ty, iity with
 	(NoType,_) -> failwith "pp_type_left: unexpected NoType"
       | (Pointer t, [i]) ->
+          pp_type_left t;
           pr_elem i;
           iiqu +> List.iter pr_elem; (* le const est forcement apres le '*' *)
           if iiqu <> [] || get_comments_after i <> []
           then pr_space();
-          pp_type_left t
+          ()
 
       | (Array (eopt, t), [i1;i2]) -> pp_type_left t
       | (FunctionType (returnt, paramst), [i1;i2]) -> pp_type_left returnt
-- 
2.21.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Cocci] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants
  2020-02-05 13:03 [Cocci] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
  2020-02-05 13:03 ` [Cocci] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
@ 2020-02-05 13:03 ` Jaskaran Singh
  2020-02-07  6:09 ` [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
  2 siblings, 0 replies; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-05 13:03 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

These types would not match previously. Add a test case for matching
a pointer to a const pointer and its variants.

Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
---
 tests/constptr.c     |  7 +++++++
 tests/constptr.cocci | 19 +++++++++++++++++++
 tests/constptr.res   |  7 +++++++
 3 files changed, 33 insertions(+)
 create mode 100644 tests/constptr.c
 create mode 100644 tests/constptr.cocci
 create mode 100644 tests/constptr.res

diff --git a/tests/constptr.c b/tests/constptr.c
new file mode 100644
index 00000000..13fe064c
--- /dev/null
+++ b/tests/constptr.c
@@ -0,0 +1,7 @@
+int main()
+{
+	const char * const * id;
+	const char * * const * id;
+	const char * const * * id;
+	const char * const id;
+}
diff --git a/tests/constptr.cocci b/tests/constptr.cocci
new file mode 100644
index 00000000..29f0aa96
--- /dev/null
+++ b/tests/constptr.cocci
@@ -0,0 +1,19 @@
+@ r0 @
+identifier id;
+@@
+const char * const *
+- id
++ id1
+;
+const char * * const *
+- id
++ id2
+;
+const char * const * *
+- id
++ id3
+;
+const char * const
+- id
++ id4
+;
diff --git a/tests/constptr.res b/tests/constptr.res
new file mode 100644
index 00000000..0af4de9a
--- /dev/null
+++ b/tests/constptr.res
@@ -0,0 +1,7 @@
+int main()
+{
+	const char * const * id1;
+	const char * * const * id2;
+	const char * const * * id3;
+	const char * const id4;
+}
-- 
2.21.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer
  2020-02-05 13:03 [Cocci] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
  2020-02-05 13:03 ` [Cocci] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
  2020-02-05 13:03 ` [Cocci] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants Jaskaran Singh
@ 2020-02-07  6:09 ` Jaskaran Singh
  2020-02-07  6:09   ` [Cocci] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
  2020-02-07  6:09   ` [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants Jaskaran Singh
  2 siblings, 2 replies; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-07  6:09 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

This series is to address the type matching problem in Coccinelle.

Patch 1/2 is for aligning the C and Cocci AST so that
pointer to const pointer and its variants can be matched.

Patch 2/2 consists of a test case for matching a pointer to
const pointer and its variants.

Changes in v2:
--------------
- Change body and subject of Patch 2/2 as per suggestion of Markus
  Elfring.

 parsing_c/parser_c.mly      |    4 ++--
 parsing_c/pretty_print_c.ml |    6 ++++--
 tests/constptr.c            |    7 +++++++
 tests/constptr.cocci        |   19 +++++++++++++++++++
 tests/constptr.res          |    7 +++++++
 5 files changed, 39 insertions(+), 4 deletions(-)


_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Cocci] [PATCH v2 1/2] parsing_c: Align C AST and Cocci AST for pointer
  2020-02-07  6:09 ` [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
@ 2020-02-07  6:09   ` " Jaskaran Singh
  2020-02-09  7:14     ` Julia Lawall
  2020-02-07  6:09   ` [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants Jaskaran Singh
  1 sibling, 1 reply; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-07  6:09 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

For a pointer, the C parser constructed an AST dissimilar from that
of the Cocci AST. This caused failures in matching with certain
pointer types. For example, for the following case:

char *1 const *2 id;

The C AST constructed would be:
const Pointer1 -> Pointer2 -> char

The Cocci AST constructed would be:
Pointer2 -> const Pointer1 -> char

Change the pointer rule in the C parser so that an AST similar to the
Cocci AST is constructed.

Make necessary changes in the C pretty printer so that the pointer type
is printed correctly.

Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
---
 parsing_c/parser_c.mly      | 4 ++--
 parsing_c/pretty_print_c.ml | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/parsing_c/parser_c.mly b/parsing_c/parser_c.mly
index 8d7b761e..4c74f15a 100644
--- a/parsing_c/parser_c.mly
+++ b/parsing_c/parser_c.mly
@@ -1333,14 +1333,14 @@ pointer:
  | tmul                   { (Ast_c.noattr,fun x -> mk_ty (Pointer x) [$1]) }
  | tmul pointer
      { let (attr,ptr) = $2 in
-       (attr,fun x -> mk_ty (Pointer (ptr x)) [$1]) }
+       (attr,fun x -> ptr (mk_ty (Pointer x) [$1])) }
  | tmul type_qualif_list
      { let (attr,tq) = $2 in
        (attr,fun x -> (tq.qualifD, mk_tybis (Pointer x) [$1]))}
  | tmul type_qualif_list pointer
      { let (attr1,tq) = $2 in
        let (attr2,ptr) = $3 in
-       (attr1@attr2,fun x -> (tq.qualifD, mk_tybis (Pointer (ptr x)) [$1])) }
+       (attr1@attr2,fun x -> ptr (tq.qualifD, mk_tybis (Pointer x) [$1])) }
 
 tmul:
    TMul { $1 }
diff --git a/parsing_c/pretty_print_c.ml b/parsing_c/pretty_print_c.ml
index a2e35588..40b89fe5 100644
--- a/parsing_c/pretty_print_c.ml
+++ b/parsing_c/pretty_print_c.ml
@@ -804,11 +804,12 @@ and pp_string_format (e,ii) =
              (FunctionType (return=void, params=int i) *)
           (*WRONG I THINK, use left & right function *)
           (* bug: pp_type_with_ident_rest None t;      print_ident ident *)
+          pp_type_left t;
           pr_elem i;
           iiqu +> List.iter pr_elem; (* le const est forcement apres le '*' *)
           if iiqu <> [] || get_comments_after i <> []
           then pr_space();
-          pp_type_with_ident_rest ident t attrs Ast_c.noattr;
+          print_ident ident
 
       (* ugly special case ... todo? maybe sufficient in practice *)
       | (ParenType ttop, [i1;i2]) ->
@@ -885,11 +886,12 @@ and pp_string_format (e,ii) =
       match ty, iity with
 	(NoType,_) -> failwith "pp_type_left: unexpected NoType"
       | (Pointer t, [i]) ->
+          pp_type_left t;
           pr_elem i;
           iiqu +> List.iter pr_elem; (* le const est forcement apres le '*' *)
           if iiqu <> [] || get_comments_after i <> []
           then pr_space();
-          pp_type_left t
+          ()
 
       | (Array (eopt, t), [i1;i2]) -> pp_type_left t
       | (FunctionType (returnt, paramst), [i1;i2]) -> pp_type_left returnt
-- 
2.21.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants
  2020-02-07  6:09 ` [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
  2020-02-07  6:09   ` [Cocci] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
@ 2020-02-07  6:09   ` Jaskaran Singh
  2020-02-09  7:20     ` Julia Lawall
  1 sibling, 1 reply; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-07  6:09 UTC (permalink / raw)
  To: cocci; +Cc: linux-kernel-mentees

Pointer to const pointer and its variants would not match previously.
Add a test case for matching these types.

Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
---
 tests/constptr.c     |  7 +++++++
 tests/constptr.cocci | 19 +++++++++++++++++++
 tests/constptr.res   |  7 +++++++
 3 files changed, 33 insertions(+)
 create mode 100644 tests/constptr.c
 create mode 100644 tests/constptr.cocci
 create mode 100644 tests/constptr.res

diff --git a/tests/constptr.c b/tests/constptr.c
new file mode 100644
index 00000000..13fe064c
--- /dev/null
+++ b/tests/constptr.c
@@ -0,0 +1,7 @@
+int main()
+{
+	const char * const * id;
+	const char * * const * id;
+	const char * const * * id;
+	const char * const id;
+}
diff --git a/tests/constptr.cocci b/tests/constptr.cocci
new file mode 100644
index 00000000..29f0aa96
--- /dev/null
+++ b/tests/constptr.cocci
@@ -0,0 +1,19 @@
+@ r0 @
+identifier id;
+@@
+const char * const *
+- id
++ id1
+;
+const char * * const *
+- id
++ id2
+;
+const char * const * *
+- id
++ id3
+;
+const char * const
+- id
++ id4
+;
diff --git a/tests/constptr.res b/tests/constptr.res
new file mode 100644
index 00000000..0af4de9a
--- /dev/null
+++ b/tests/constptr.res
@@ -0,0 +1,7 @@
+int main()
+{
+	const char * const * id1;
+	const char * * const * id2;
+	const char * const * * id3;
+	const char * const id4;
+}
-- 
2.21.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Cocci] [PATCH v2 1/2] parsing_c: Align C AST and Cocci AST for pointer
  2020-02-07  6:09   ` [Cocci] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
@ 2020-02-09  7:14     ` Julia Lawall
  0 siblings, 0 replies; 11+ messages in thread
From: Julia Lawall @ 2020-02-09  7:14 UTC (permalink / raw)
  To: Jaskaran Singh; +Cc: linux-kernel-mentees, cocci

There is a problem with the pretty printing.  For the following semantic
patch:

@@
type t;
symbol x;
@@
void main() {
-	t x;
+	t y;
}

and the following C code:

void main() {
	const char * const * x;
}


The output is:

 void main() {
-	const char * const * x;
+	const char *const *y;
 }

There should be a space between * and const on the + line.

julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants
  2020-02-07  6:09   ` [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants Jaskaran Singh
@ 2020-02-09  7:20     ` Julia Lawall
  2020-02-09  7:58       ` Jaskaran Singh
  0 siblings, 1 reply; 11+ messages in thread
From: Julia Lawall @ 2020-02-09  7:20 UTC (permalink / raw)
  To: Jaskaran Singh; +Cc: linux-kernel-mentees, cocci

On Fri, 7 Feb 2020, Jaskaran Singh wrote:

> Pointer to const pointer and its variants would not match previously.
> Add a test case for matching these types.

I don't get any matches for this test.  If I split the semantic patch into
four separate rules, then I get the change for id2 and id4, but not for
the other two.

julia

>
> Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
> ---
>  tests/constptr.c     |  7 +++++++
>  tests/constptr.cocci | 19 +++++++++++++++++++
>  tests/constptr.res   |  7 +++++++
>  3 files changed, 33 insertions(+)
>  create mode 100644 tests/constptr.c
>  create mode 100644 tests/constptr.cocci
>  create mode 100644 tests/constptr.res
>
> diff --git a/tests/constptr.c b/tests/constptr.c
> new file mode 100644
> index 00000000..13fe064c
> --- /dev/null
> +++ b/tests/constptr.c
> @@ -0,0 +1,7 @@
> +int main()
> +{
> +	const char * const * id;
> +	const char * * const * id;
> +	const char * const * * id;
> +	const char * const id;
> +}
> diff --git a/tests/constptr.cocci b/tests/constptr.cocci
> new file mode 100644
> index 00000000..29f0aa96
> --- /dev/null
> +++ b/tests/constptr.cocci
> @@ -0,0 +1,19 @@
> +@ r0 @
> +identifier id;
> +@@
> +const char * const *
> +- id
> ++ id1
> +;
> +const char * * const *
> +- id
> ++ id2
> +;
> +const char * const * *
> +- id
> ++ id3
> +;
> +const char * const
> +- id
> ++ id4
> +;
> diff --git a/tests/constptr.res b/tests/constptr.res
> new file mode 100644
> index 00000000..0af4de9a
> --- /dev/null
> +++ b/tests/constptr.res
> @@ -0,0 +1,7 @@
> +int main()
> +{
> +	const char * const * id1;
> +	const char * * const * id2;
> +	const char * const * * id3;
> +	const char * const id4;
> +}
> --
> 2.21.1
>
>
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants
  2020-02-09  7:20     ` Julia Lawall
@ 2020-02-09  7:58       ` Jaskaran Singh
  2020-02-09  8:07         ` Julia Lawall
  0 siblings, 1 reply; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-09  7:58 UTC (permalink / raw)
  To: Julia Lawall; +Cc: linux-kernel-mentees, cocci

On Sun, 2020-02-09 at 08:20 +0100, Julia Lawall wrote:
> On Fri, 7 Feb 2020, Jaskaran Singh wrote:
> 
> > Pointer to const pointer and its variants would not match
> > previously.
> > Add a test case for matching these types.
> 
> I don't get any matches for this test.  If I split the semantic patch
> into
> four separate rules, then I get the change for id2 and id4, but not
> for
> the other two.
> 

That's weird, it works fine for me. I get this on both bytecode and
native builds.

--- tests/constptr.c
+++ /tmp/cocci-output-31326-084eed-constptr.c
@@ -1,7 +1,7 @@
 int main()
 {
-	const char * const * id;
-	const char * * const * id;
-	const char * const * * id;
-	const char * const id;
+	const char * const * id1;
+	const char * * const * id2;
+	const char * const * * id3;
+	const char * const id4;
 }


On the other hand, I get the id2 and id4 result with upstream.

--- tests/constptr.c
+++ /tmp/cocci-output-5387-a9b63b-constptr.c
@@ -1,7 +1,7 @@
 int main()
 {
 	const char * const * id;
-	const char * * const * id;
+	const char * * const * id2;
 	const char * const * * id;
-	const char * const id;
+	const char * const id4;
 }

Could you check if you've applied 1/2 first?

Cheers,
Jaskaran.

> julia
> 
> > Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
> > ---
> >  tests/constptr.c     |  7 +++++++
> >  tests/constptr.cocci | 19 +++++++++++++++++++
> >  tests/constptr.res   |  7 +++++++
> >  3 files changed, 33 insertions(+)
> >  create mode 100644 tests/constptr.c
> >  create mode 100644 tests/constptr.cocci
> >  create mode 100644 tests/constptr.res
> > 
> > diff --git a/tests/constptr.c b/tests/constptr.c
> > new file mode 100644
> > index 00000000..13fe064c
> > --- /dev/null
> > +++ b/tests/constptr.c
> > @@ -0,0 +1,7 @@
> > +int main()
> > +{
> > +	const char * const * id;
> > +	const char * * const * id;
> > +	const char * const * * id;
> > +	const char * const id;
> > +}
> > diff --git a/tests/constptr.cocci b/tests/constptr.cocci
> > new file mode 100644
> > index 00000000..29f0aa96
> > --- /dev/null
> > +++ b/tests/constptr.cocci
> > @@ -0,0 +1,19 @@
> > +@ r0 @
> > +identifier id;
> > +@@
> > +const char * const *
> > +- id
> > ++ id1
> > +;
> > +const char * * const *
> > +- id
> > ++ id2
> > +;
> > +const char * const * *
> > +- id
> > ++ id3
> > +;
> > +const char * const
> > +- id
> > ++ id4
> > +;
> > diff --git a/tests/constptr.res b/tests/constptr.res
> > new file mode 100644
> > index 00000000..0af4de9a
> > --- /dev/null
> > +++ b/tests/constptr.res
> > @@ -0,0 +1,7 @@
> > +int main()
> > +{
> > +	const char * const * id1;
> > +	const char * * const * id2;
> > +	const char * const * * id3;
> > +	const char * const id4;
> > +}
> > --
> > 2.21.1
> > 
> > 

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants
  2020-02-09  7:58       ` Jaskaran Singh
@ 2020-02-09  8:07         ` Julia Lawall
  2020-02-09  8:09           ` Jaskaran Singh
  0 siblings, 1 reply; 11+ messages in thread
From: Julia Lawall @ 2020-02-09  8:07 UTC (permalink / raw)
  To: Jaskaran Singh; +Cc: linux-kernel-mentees, cocci

On Sun, 9 Feb 2020, Jaskaran Singh wrote:

> On Sun, 2020-02-09 at 08:20 +0100, Julia Lawall wrote:
> > On Fri, 7 Feb 2020, Jaskaran Singh wrote:
> >
> > > Pointer to const pointer and its variants would not match
> > > previously.
> > > Add a test case for matching these types.
> >
> > I don't get any matches for this test.  If I split the semantic patch
> > into
> > four separate rules, then I get the change for id2 and id4, but not
> > for
> > the other two.
> >
>
> That's weird, it works fine for me. I get this on both bytecode and
> native builds.

OK, you're right, it's OK.

Can you fix the *const problem?  I still see that one.

thanks,
julia

>
> --- tests/constptr.c
> +++ /tmp/cocci-output-31326-084eed-constptr.c
> @@ -1,7 +1,7 @@
>  int main()
>  {
> -	const char * const * id;
> -	const char * * const * id;
> -	const char * const * * id;
> -	const char * const id;
> +	const char * const * id1;
> +	const char * * const * id2;
> +	const char * const * * id3;
> +	const char * const id4;
>  }
>
>
> On the other hand, I get the id2 and id4 result with upstream.
>
> --- tests/constptr.c
> +++ /tmp/cocci-output-5387-a9b63b-constptr.c
> @@ -1,7 +1,7 @@
>  int main()
>  {
>  	const char * const * id;
> -	const char * * const * id;
> +	const char * * const * id2;
>  	const char * const * * id;
> -	const char * const id;
> +	const char * const id4;
>  }
>
> Could you check if you've applied 1/2 first?
>
> Cheers,
> Jaskaran.
>
> > julia
> >
> > > Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
> > > ---
> > >  tests/constptr.c     |  7 +++++++
> > >  tests/constptr.cocci | 19 +++++++++++++++++++
> > >  tests/constptr.res   |  7 +++++++
> > >  3 files changed, 33 insertions(+)
> > >  create mode 100644 tests/constptr.c
> > >  create mode 100644 tests/constptr.cocci
> > >  create mode 100644 tests/constptr.res
> > >
> > > diff --git a/tests/constptr.c b/tests/constptr.c
> > > new file mode 100644
> > > index 00000000..13fe064c
> > > --- /dev/null
> > > +++ b/tests/constptr.c
> > > @@ -0,0 +1,7 @@
> > > +int main()
> > > +{
> > > +	const char * const * id;
> > > +	const char * * const * id;
> > > +	const char * const * * id;
> > > +	const char * const id;
> > > +}
> > > diff --git a/tests/constptr.cocci b/tests/constptr.cocci
> > > new file mode 100644
> > > index 00000000..29f0aa96
> > > --- /dev/null
> > > +++ b/tests/constptr.cocci
> > > @@ -0,0 +1,19 @@
> > > +@ r0 @
> > > +identifier id;
> > > +@@
> > > +const char * const *
> > > +- id
> > > ++ id1
> > > +;
> > > +const char * * const *
> > > +- id
> > > ++ id2
> > > +;
> > > +const char * const * *
> > > +- id
> > > ++ id3
> > > +;
> > > +const char * const
> > > +- id
> > > ++ id4
> > > +;
> > > diff --git a/tests/constptr.res b/tests/constptr.res
> > > new file mode 100644
> > > index 00000000..0af4de9a
> > > --- /dev/null
> > > +++ b/tests/constptr.res
> > > @@ -0,0 +1,7 @@
> > > +int main()
> > > +{
> > > +	const char * const * id1;
> > > +	const char * * const * id2;
> > > +	const char * const * * id3;
> > > +	const char * const id4;
> > > +}
> > > --
> > > 2.21.1
> > >
> > >
>
>
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants
  2020-02-09  8:07         ` Julia Lawall
@ 2020-02-09  8:09           ` Jaskaran Singh
  0 siblings, 0 replies; 11+ messages in thread
From: Jaskaran Singh @ 2020-02-09  8:09 UTC (permalink / raw)
  To: Julia Lawall; +Cc: linux-kernel-mentees, cocci

On Sun, 2020-02-09 at 09:07 +0100, Julia Lawall wrote:
> On Sun, 9 Feb 2020, Jaskaran Singh wrote:
> 
> > On Sun, 2020-02-09 at 08:20 +0100, Julia Lawall wrote:
> > > On Fri, 7 Feb 2020, Jaskaran Singh wrote:
> > > 
> > > > Pointer to const pointer and its variants would not match
> > > > previously.
> > > > Add a test case for matching these types.
> > > 
> > > I don't get any matches for this test.  If I split the semantic
> > > patch
> > > into
> > > four separate rules, then I get the change for id2 and id4, but
> > > not
> > > for
> > > the other two.
> > > 
> > 
> > That's weird, it works fine for me. I get this on both bytecode and
> > native builds.
> 
> OK, you're right, it's OK.
> 
> Can you fix the *const problem?  I still see that one.
> 

Sure, will send v3.

Cheers,
Jaskaran.

> thanks,
> julia
> 
> > --- tests/constptr.c
> > +++ /tmp/cocci-output-31326-084eed-constptr.c
> > @@ -1,7 +1,7 @@
> >  int main()
> >  {
> > -	const char * const * id;
> > -	const char * * const * id;
> > -	const char * const * * id;
> > -	const char * const id;
> > +	const char * const * id1;
> > +	const char * * const * id2;
> > +	const char * const * * id3;
> > +	const char * const id4;
> >  }
> > 
> > 
> > On the other hand, I get the id2 and id4 result with upstream.
> > 
> > --- tests/constptr.c
> > +++ /tmp/cocci-output-5387-a9b63b-constptr.c
> > @@ -1,7 +1,7 @@
> >  int main()
> >  {
> >  	const char * const * id;
> > -	const char * * const * id;
> > +	const char * * const * id2;
> >  	const char * const * * id;
> > -	const char * const id;
> > +	const char * const id4;
> >  }
> > 
> > Could you check if you've applied 1/2 first?
> > 
> > Cheers,
> > Jaskaran.
> > 
> > > julia
> > > 
> > > > Signed-off-by: Jaskaran Singh <jaskaransingh7654321@gmail.com>
> > > > ---
> > > >  tests/constptr.c     |  7 +++++++
> > > >  tests/constptr.cocci | 19 +++++++++++++++++++
> > > >  tests/constptr.res   |  7 +++++++
> > > >  3 files changed, 33 insertions(+)
> > > >  create mode 100644 tests/constptr.c
> > > >  create mode 100644 tests/constptr.cocci
> > > >  create mode 100644 tests/constptr.res
> > > > 
> > > > diff --git a/tests/constptr.c b/tests/constptr.c
> > > > new file mode 100644
> > > > index 00000000..13fe064c
> > > > --- /dev/null
> > > > +++ b/tests/constptr.c
> > > > @@ -0,0 +1,7 @@
> > > > +int main()
> > > > +{
> > > > +	const char * const * id;
> > > > +	const char * * const * id;
> > > > +	const char * const * * id;
> > > > +	const char * const id;
> > > > +}
> > > > diff --git a/tests/constptr.cocci b/tests/constptr.cocci
> > > > new file mode 100644
> > > > index 00000000..29f0aa96
> > > > --- /dev/null
> > > > +++ b/tests/constptr.cocci
> > > > @@ -0,0 +1,19 @@
> > > > +@ r0 @
> > > > +identifier id;
> > > > +@@
> > > > +const char * const *
> > > > +- id
> > > > ++ id1
> > > > +;
> > > > +const char * * const *
> > > > +- id
> > > > ++ id2
> > > > +;
> > > > +const char * const * *
> > > > +- id
> > > > ++ id3
> > > > +;
> > > > +const char * const
> > > > +- id
> > > > ++ id4
> > > > +;
> > > > diff --git a/tests/constptr.res b/tests/constptr.res
> > > > new file mode 100644
> > > > index 00000000..0af4de9a
> > > > --- /dev/null
> > > > +++ b/tests/constptr.res
> > > > @@ -0,0 +1,7 @@
> > > > +int main()
> > > > +{
> > > > +	const char * const * id1;
> > > > +	const char * * const * id2;
> > > > +	const char * const * * id3;
> > > > +	const char * const id4;
> > > > +}
> > > > --
> > > > 2.21.1
> > > > 
> > > > 

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, back to index

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-05 13:03 [Cocci] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-05 13:03 ` [Cocci] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
2020-02-05 13:03 ` [Cocci] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants Jaskaran Singh
2020-02-07  6:09 ` [Cocci] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-07  6:09   ` [Cocci] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
2020-02-09  7:14     ` Julia Lawall
2020-02-07  6:09   ` [Cocci] [PATCH v2 2/2] tests: Add test case to match const pointer variants Jaskaran Singh
2020-02-09  7:20     ` Julia Lawall
2020-02-09  7:58       ` Jaskaran Singh
2020-02-09  8:07         ` Julia Lawall
2020-02-09  8:09           ` Jaskaran Singh

Coccinelle archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/cocci/0 cocci/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 cocci cocci/ https://lore.kernel.org/cocci \
		cocci@systeme.lip6.fr
	public-inbox-index cocci

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/fr.lip6.systeme.cocci


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git