* [Linux-kernel-mentees] [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 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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(-)
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Linux-kernel-mentees] [PATCH 1/2] parsing_c: Align C AST and Cocci AST for pointer
2020-02-05 13:03 [Linux-kernel-mentees] [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 ` [Linux-kernel-mentees] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Linux-kernel-mentees] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants
2020-02-05 13:03 [Linux-kernel-mentees] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-05 13:03 ` [Linux-kernel-mentees] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
@ 2020-02-05 13:03 ` Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer
2020-02-05 13:03 [Linux-kernel-mentees] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-05 13:03 ` [Linux-kernel-mentees] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
2020-02-05 13:03 ` [Linux-kernel-mentees] [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 ` [Linux-kernel-mentees] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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(-)
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 1/2] parsing_c: Align C AST and Cocci AST for pointer
2020-02-07 6:09 ` [Linux-kernel-mentees] [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 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Linux-kernel-mentees] [PATCH v2 2/2] tests: Add test case to match const pointer variants
2020-02-07 6:09 ` [Linux-kernel-mentees] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [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: julia.lawall, jaskaransingh7654321, 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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Linux-kernel-mentees] [PATCH v2 1/2] parsing_c: Align C AST and Cocci AST for pointer
2020-02-07 6:09 ` [Linux-kernel-mentees] [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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Linux-kernel-mentees] [PATCH v2 2/2] tests: Add test case to match const pointer variants
2020-02-07 6:09 ` [Linux-kernel-mentees] [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
>
>
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Linux-kernel-mentees] [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
> >
> >
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Linux-kernel-mentees] [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
> > >
> > >
>
>
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Linux-kernel-mentees] [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
> > > >
> > > >
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-02-09 8:09 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-05 13:03 [Linux-kernel-mentees] [PATCH 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-05 13:03 ` [Linux-kernel-mentees] [PATCH 1/2] parsing_c: Align " Jaskaran Singh
2020-02-05 13:03 ` [Linux-kernel-mentees] [PATCH 2/2] tests: Add test case for matching ptr to const ptr and variants Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [PATCH v2 0/2] cocci: Align the C AST and Cocci AST for pointer Jaskaran Singh
2020-02-07 6:09 ` [Linux-kernel-mentees] [PATCH v2 1/2] parsing_c: Align " Jaskaran Singh
2020-02-09 7:14 ` Julia Lawall
2020-02-07 6:09 ` [Linux-kernel-mentees] [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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).