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