1*2cbd0825SJulia Lawall/// sizeof when applied to a pointer typed expression gives the size of 2*2cbd0825SJulia Lawall/// the pointer 3*2cbd0825SJulia Lawall/// 4*2cbd0825SJulia Lawall// Confidence: High 5*2cbd0825SJulia Lawall// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. 6*2cbd0825SJulia Lawall// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. 7*2cbd0825SJulia Lawall// URL: http://coccinelle.lip6.fr/ 8*2cbd0825SJulia Lawall// Comments: 9*2cbd0825SJulia Lawall// Options: -no_includes -include_headers 10*2cbd0825SJulia Lawall 11*2cbd0825SJulia Lawallvirtual org 12*2cbd0825SJulia Lawallvirtual report 13*2cbd0825SJulia Lawallvirtual context 14*2cbd0825SJulia Lawallvirtual patch 15*2cbd0825SJulia Lawall 16*2cbd0825SJulia Lawall@depends on patch@ 17*2cbd0825SJulia Lawallexpression *x; 18*2cbd0825SJulia Lawallexpression f; 19*2cbd0825SJulia Lawalltype T; 20*2cbd0825SJulia Lawall@@ 21*2cbd0825SJulia Lawall 22*2cbd0825SJulia Lawall( 23*2cbd0825SJulia Lawallx = <+... sizeof( 24*2cbd0825SJulia Lawall- x 25*2cbd0825SJulia Lawall+ *x 26*2cbd0825SJulia Lawall ) ...+> 27*2cbd0825SJulia Lawall| 28*2cbd0825SJulia Lawallf(...,(T)(x),...,sizeof( 29*2cbd0825SJulia Lawall- x 30*2cbd0825SJulia Lawall+ *x 31*2cbd0825SJulia Lawall ),...) 32*2cbd0825SJulia Lawall| 33*2cbd0825SJulia Lawallf(...,sizeof(x),...,(T)( 34*2cbd0825SJulia Lawall- x 35*2cbd0825SJulia Lawall+ *x 36*2cbd0825SJulia Lawall ),...) 37*2cbd0825SJulia Lawall) 38*2cbd0825SJulia Lawall 39*2cbd0825SJulia Lawall@r depends on !patch@ 40*2cbd0825SJulia Lawallexpression *x; 41*2cbd0825SJulia Lawallexpression f; 42*2cbd0825SJulia Lawallposition p; 43*2cbd0825SJulia Lawalltype T; 44*2cbd0825SJulia Lawall@@ 45*2cbd0825SJulia Lawall 46*2cbd0825SJulia Lawall( 47*2cbd0825SJulia Lawall*x = <+... sizeof@p(x) ...+> 48*2cbd0825SJulia Lawall| 49*2cbd0825SJulia Lawall*f(...,(T)(x),...,sizeof@p(x),...) 50*2cbd0825SJulia Lawall| 51*2cbd0825SJulia Lawall*f(...,sizeof@p(x),...,(T)(x),...) 52*2cbd0825SJulia Lawall) 53*2cbd0825SJulia Lawall 54*2cbd0825SJulia Lawall@script:python depends on org@ 55*2cbd0825SJulia Lawallp << r.p; 56*2cbd0825SJulia Lawall@@ 57*2cbd0825SJulia Lawall 58*2cbd0825SJulia Lawallcocci.print_main("application of sizeof to pointer",p) 59*2cbd0825SJulia Lawall 60*2cbd0825SJulia Lawall@script:python depends on report@ 61*2cbd0825SJulia Lawallp << r.p; 62*2cbd0825SJulia Lawall@@ 63*2cbd0825SJulia Lawall 64*2cbd0825SJulia Lawallmsg = "ERROR: application of sizeof to pointer" 65*2cbd0825SJulia Lawallcoccilib.report.print_report(p[0],msg) 66