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
>
>