18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/// sizeof when applied to a pointer typed expression gives the size of 38c2ecf20Sopenharmony_ci/// the pointer 48c2ecf20Sopenharmony_ci/// 58c2ecf20Sopenharmony_ci// Confidence: High 68c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. 78c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. 88c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/ 98c2ecf20Sopenharmony_ci// Comments: 108c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_civirtual org 138c2ecf20Sopenharmony_civirtual report 148c2ecf20Sopenharmony_civirtual context 158c2ecf20Sopenharmony_civirtual patch 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci@depends on patch@ 188c2ecf20Sopenharmony_ciexpression *x; 198c2ecf20Sopenharmony_ciexpression f; 208c2ecf20Sopenharmony_ciexpression i; 218c2ecf20Sopenharmony_citype T; 228c2ecf20Sopenharmony_ci@@ 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci( 258c2ecf20Sopenharmony_cix = <+... sizeof( 268c2ecf20Sopenharmony_ci- x 278c2ecf20Sopenharmony_ci+ *x 288c2ecf20Sopenharmony_ci ) ...+> 298c2ecf20Sopenharmony_ci| 308c2ecf20Sopenharmony_cif(...,(T)(x),...,sizeof( 318c2ecf20Sopenharmony_ci- x 328c2ecf20Sopenharmony_ci+ *x 338c2ecf20Sopenharmony_ci ),...) 348c2ecf20Sopenharmony_ci| 358c2ecf20Sopenharmony_cif(...,sizeof( 368c2ecf20Sopenharmony_ci- x 378c2ecf20Sopenharmony_ci+ *x 388c2ecf20Sopenharmony_ci ),...,(T)(x),...) 398c2ecf20Sopenharmony_ci| 408c2ecf20Sopenharmony_cif(...,(T)(x),...,i*sizeof( 418c2ecf20Sopenharmony_ci- x 428c2ecf20Sopenharmony_ci+ *x 438c2ecf20Sopenharmony_ci ),...) 448c2ecf20Sopenharmony_ci| 458c2ecf20Sopenharmony_cif(...,i*sizeof( 468c2ecf20Sopenharmony_ci- x 478c2ecf20Sopenharmony_ci+ *x 488c2ecf20Sopenharmony_ci ),...,(T)(x),...) 498c2ecf20Sopenharmony_ci) 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci@r depends on !patch@ 528c2ecf20Sopenharmony_ciexpression *x; 538c2ecf20Sopenharmony_ciexpression f; 548c2ecf20Sopenharmony_ciexpression i; 558c2ecf20Sopenharmony_ciposition p; 568c2ecf20Sopenharmony_citype T; 578c2ecf20Sopenharmony_ci@@ 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci( 608c2ecf20Sopenharmony_ci*x = <+... sizeof@p(x) ...+> 618c2ecf20Sopenharmony_ci| 628c2ecf20Sopenharmony_ci*f(...,(T)(x),...,sizeof@p(x),...) 638c2ecf20Sopenharmony_ci| 648c2ecf20Sopenharmony_ci*f(...,sizeof@p(x),...,(T)(x),...) 658c2ecf20Sopenharmony_ci| 668c2ecf20Sopenharmony_ci*f(...,(T)(x),...,i*sizeof@p(x),...) 678c2ecf20Sopenharmony_ci| 688c2ecf20Sopenharmony_ci*f(...,i*sizeof@p(x),...,(T)(x),...) 698c2ecf20Sopenharmony_ci) 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci@script:python depends on org@ 728c2ecf20Sopenharmony_cip << r.p; 738c2ecf20Sopenharmony_ci@@ 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_cicocci.print_main("application of sizeof to pointer",p) 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci@script:python depends on report@ 788c2ecf20Sopenharmony_cip << r.p; 798c2ecf20Sopenharmony_ci@@ 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_cimsg = "ERROR: application of sizeof to pointer" 828c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg) 83