Re: [cocci] Can Coccinelle parse files where macros are used as binary operations?
Julia Lawall <[email protected]> Fri, 13 Mar 2026 15:12:34 +0100 (CET)
| Newsgroups | fr.inria.cocci |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 12 Mar 2026, Alice Lee wrote: > > Hello, > > I am trying to use Coccinelle to search C codebases (I split up my questions > to make the threads more clear) and I am struggling to understand the scope > of the --macro-file argument. > > Can macros used with #if in the source code be defined in a file passed with > --macro-file, and then the right sections of source code are ignored? I was > unable to get a small example to work, so I assume that I can define the > macro but then there is no preprocessing to drop code. If I'm not > overlooking something, how would you recommend I parse a file > including these lines and then uses LS/RS as binary operators: > #if __BYTE_ORDER == __LITTLE_ENDIAN > #define LS >> > #define RS << > #else > #define LS << > #define RS >> > #endif > > I'm especially confused by this example because Coccinelle also cannot parse > a version in which I remove the code above and put one of the pairs of > defines in the macro definition file. I think you want the following command line options: --defined <symbol> treat cpp symbol as defined in #ifdef --undefined <symbol> treat cpp symbol as undefined in #ifdef --macro-file is for providing dummy definitions for macros used in the code that you are trying to parse. julia > > Thank you, > Alice Lee > >