From mboxrd@z Thu Jan 1 00:00:00 1970 From: joel@joelfernandes.org (Joel Fernandes) Date: Thu, 11 Oct 2018 10:06:18 -0700 Subject: [Cocci] Searching for parameter usages of pte_alloc() In-Reply-To: References: <20181010211125.GA128537@joelaf.mtv.corp.google.com> <93da55ff-c807-6587-7ef3-3d2af820117d@users.sourceforge.net> <20181011154346.GA186033@joelaf.mtv.corp.google.com> <20181011162840.GA199386@joelaf.mtv.corp.google.com> <20181011164934.GA213196@joelaf.mtv.corp.google.com> Message-ID: <20181011170618.GC213196@joelaf.mtv.corp.google.com> To: cocci@systeme.lip6.fr List-Id: cocci@systeme.lip6.fr On Thu, Oct 11, 2018 at 06:57:39PM +0200, Julia Lawall wrote: > > > Of course, you would want to use a regular expression for the macro name, > > > or do something to avoid changing all two argument macros. > > > > > > Macros are often defined in header files, so you may want to use the > > > command line options --no-includes --include-headers. --no-includes means > > > ignore header files when they are included into .c files and > > > --include-headers means treat both .c an .h files. Otherwise, you only get > > > .c files. > > > > I am using --include-headers. I didn't get the --no-includes use with > > --include-headers though. > > > > What happens if I don't pass --no-includes? Do the header files included > > from C files also get matched then? Then in that case I shouldn't need to > > pass anything (neither --include-headers nor --no-includes) and all included > > headers from C files should also be matched/parsed/patched - since every > > header should atleast be included *somewhere* otherwise its existinence is > > pointless. Could you help me understand this better? Thanks a lot! > > 1. Coccinelle desn't know about the make file. So there are many header > files that it may not be able to find. > > 2. Many header files are irrelevant to your problem and included in many > .c files, meaning that if you rely on the .c files to get the prcessing of > the .h files, you will be processing the same code over and over. > > If you use --no-includes --include-headers then every files will be > processed and it will be processed only once. > > Including headers, which can be done with eg --all-includes (all files > mentioned explicitly in the .c file) or --recursive-includes (files > included by other .h files) is useful if you need type information in > processing the .c file and if the processing of the .h file relies on > information present in the .c file. If you only need type information > then the option --include-headers-for-types is useful, as the headers will > only be taken into account during the type inference phase, and then > ignored during matching and transformation, whih provides a significant > performance benefit. Got it, I understand it now. Thanks! - Joel