xref: /openbmc/linux/scripts/coccinelle/misc/noderef.cocci (revision bf56cc04ef97c8ec536e3fcd16fc57902cba339f)
12cbd0825SJulia Lawall/// sizeof when applied to a pointer typed expression gives the size of
22cbd0825SJulia Lawall/// the pointer
32cbd0825SJulia Lawall///
42cbd0825SJulia Lawall// Confidence: High
52cbd0825SJulia Lawall// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2.
62cbd0825SJulia Lawall// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2.
72cbd0825SJulia Lawall// URL: http://coccinelle.lip6.fr/
82cbd0825SJulia Lawall// Comments:
993f14468SNicolas Palix// Options: --no-includes --include-headers
102cbd0825SJulia Lawall
112cbd0825SJulia Lawallvirtual org
122cbd0825SJulia Lawallvirtual report
132cbd0825SJulia Lawallvirtual context
142cbd0825SJulia Lawallvirtual patch
152cbd0825SJulia Lawall
162cbd0825SJulia Lawall@depends on patch@
172cbd0825SJulia Lawallexpression *x;
182cbd0825SJulia Lawallexpression f;
19*bf56cc04SVaishali Thakkarexpression i;
202cbd0825SJulia Lawalltype T;
212cbd0825SJulia Lawall@@
222cbd0825SJulia Lawall
232cbd0825SJulia Lawall(
242cbd0825SJulia Lawallx = <+... sizeof(
252cbd0825SJulia Lawall- x
262cbd0825SJulia Lawall+ *x
272cbd0825SJulia Lawall   ) ...+>
282cbd0825SJulia Lawall|
292cbd0825SJulia Lawallf(...,(T)(x),...,sizeof(
302cbd0825SJulia Lawall- x
312cbd0825SJulia Lawall+ *x
322cbd0825SJulia Lawall   ),...)
332cbd0825SJulia Lawall|
34*bf56cc04SVaishali Thakkarf(...,sizeof(
35*bf56cc04SVaishali Thakkar- x
36*bf56cc04SVaishali Thakkar+ *x
37*bf56cc04SVaishali Thakkar   ),...,(T)(x),...)
38*bf56cc04SVaishali Thakkar|
39*bf56cc04SVaishali Thakkarf(...,(T)(x),...,i*sizeof(
402cbd0825SJulia Lawall- x
412cbd0825SJulia Lawall+ *x
422cbd0825SJulia Lawall   ),...)
43*bf56cc04SVaishali Thakkar|
44*bf56cc04SVaishali Thakkarf(...,i*sizeof(
45*bf56cc04SVaishali Thakkar- x
46*bf56cc04SVaishali Thakkar+ *x
47*bf56cc04SVaishali Thakkar   ),...,(T)(x),...)
482cbd0825SJulia Lawall)
492cbd0825SJulia Lawall
502cbd0825SJulia Lawall@r depends on !patch@
512cbd0825SJulia Lawallexpression *x;
522cbd0825SJulia Lawallexpression f;
53*bf56cc04SVaishali Thakkarexpression i;
542cbd0825SJulia Lawallposition p;
552cbd0825SJulia Lawalltype T;
562cbd0825SJulia Lawall@@
572cbd0825SJulia Lawall
582cbd0825SJulia Lawall(
592cbd0825SJulia Lawall*x = <+... sizeof@p(x) ...+>
602cbd0825SJulia Lawall|
612cbd0825SJulia Lawall*f(...,(T)(x),...,sizeof@p(x),...)
622cbd0825SJulia Lawall|
632cbd0825SJulia Lawall*f(...,sizeof@p(x),...,(T)(x),...)
64*bf56cc04SVaishali Thakkar|
65*bf56cc04SVaishali Thakkar*f(...,(T)(x),...,i*sizeof@p(x),...)
66*bf56cc04SVaishali Thakkar|
67*bf56cc04SVaishali Thakkar*f(...,i*sizeof@p(x),...,(T)(x),...)
682cbd0825SJulia Lawall)
692cbd0825SJulia Lawall
702cbd0825SJulia Lawall@script:python depends on org@
712cbd0825SJulia Lawallp << r.p;
722cbd0825SJulia Lawall@@
732cbd0825SJulia Lawall
742cbd0825SJulia Lawallcocci.print_main("application of sizeof to pointer",p)
752cbd0825SJulia Lawall
762cbd0825SJulia Lawall@script:python depends on report@
772cbd0825SJulia Lawallp << r.p;
782cbd0825SJulia Lawall@@
792cbd0825SJulia Lawall
802cbd0825SJulia Lawallmsg = "ERROR: application of sizeof to pointer"
812cbd0825SJulia Lawallcoccilib.report.print_report(p[0],msg)
82