Commit | Line | Data |
---|---|---|
7f904d7e | 1 | // SPDX-License-Identifier: GPL-2.0-only |
2cbd0825 JL |
2 | /// sizeof when applied to a pointer typed expression gives the size of |
3 | /// the pointer | |
4 | /// | |
5 | // Confidence: High | |
7f904d7e TG |
6 | // Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. |
7 | // Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. | |
2cbd0825 JL |
8 | // URL: http://coccinelle.lip6.fr/ |
9 | // Comments: | |
93f14468 | 10 | // Options: --no-includes --include-headers |
2cbd0825 JL |
11 | |
12 | virtual org | |
13 | virtual report | |
14 | virtual context | |
15 | virtual patch | |
16 | ||
17 | @depends on patch@ | |
18 | expression *x; | |
19 | expression f; | |
bf56cc04 | 20 | expression i; |
2cbd0825 JL |
21 | type T; |
22 | @@ | |
23 | ||
24 | ( | |
25 | x = <+... sizeof( | |
26 | - x | |
27 | + *x | |
28 | ) ...+> | |
29 | | | |
30 | f(...,(T)(x),...,sizeof( | |
31 | - x | |
32 | + *x | |
33 | ),...) | |
34 | | | |
bf56cc04 VT |
35 | f(...,sizeof( |
36 | - x | |
37 | + *x | |
38 | ),...,(T)(x),...) | |
39 | | | |
40 | f(...,(T)(x),...,i*sizeof( | |
2cbd0825 JL |
41 | - x |
42 | + *x | |
43 | ),...) | |
bf56cc04 VT |
44 | | |
45 | f(...,i*sizeof( | |
46 | - x | |
47 | + *x | |
48 | ),...,(T)(x),...) | |
2cbd0825 JL |
49 | ) |
50 | ||
51 | @r depends on !patch@ | |
52 | expression *x; | |
53 | expression f; | |
bf56cc04 | 54 | expression i; |
2cbd0825 JL |
55 | position p; |
56 | type T; | |
57 | @@ | |
58 | ||
59 | ( | |
60 | *x = <+... sizeof@p(x) ...+> | |
61 | | | |
62 | *f(...,(T)(x),...,sizeof@p(x),...) | |
63 | | | |
64 | *f(...,sizeof@p(x),...,(T)(x),...) | |
bf56cc04 VT |
65 | | |
66 | *f(...,(T)(x),...,i*sizeof@p(x),...) | |
67 | | | |
68 | *f(...,i*sizeof@p(x),...,(T)(x),...) | |
2cbd0825 JL |
69 | ) |
70 | ||
71 | @script:python depends on org@ | |
72 | p << r.p; | |
73 | @@ | |
74 | ||
75 | cocci.print_main("application of sizeof to pointer",p) | |
76 | ||
77 | @script:python depends on report@ | |
78 | p << r.p; | |
79 | @@ | |
80 | ||
81 | msg = "ERROR: application of sizeof to pointer" | |
82 | coccilib.report.print_report(p[0],msg) |