coccinelle: ignore macro transformations in the macros themselves

For example, the following transformation:

- sizeof(s)-1
+ STRLEN(s)

would replace sizeof by STRLEN even in the STRLEN macro definition
itself, which generates following nonsensical patch:

--- src/basic/macro.h
+++ /tmp/cocci-output-8753-b50773-macro.h
@@ -182,7 +182,7 @@ static inline unsigned long ALIGN_POWER2
  *          Contrary to strlen(), this is a constant expression.
  * @x: a string literal.
  */
-#define STRLEN(x) (sizeof(""x"") - 1)
+#define STRLEN(x) (STRLEN("" x ""))

 /*
  * container_of - cast a member of a structure out to the containing structure

Let's exclude the macro itself from the transformation to avoid this
This commit is contained in:
Frantisek Sumsal 2019-04-28 15:03:47 +02:00
parent 55033662f9
commit 33af88cf70
3 changed files with 20 additions and 0 deletions

View File

@ -1,8 +1,12 @@
@@
constant s;
@@
(
#define STRLEN
&
- sizeof(s)-1
+ STRLEN(s)
)
@@
constant s;
@@

View File

@ -1,8 +1,16 @@
@@
@@
(
#define DEBUG_LOGGING
&
- _unlikely_(log_get_max_level() >= LOG_DEBUG)
+ DEBUG_LOGGING
)
@@
@@
(
#define DEBUG_LOGGING
&
- log_get_max_level() >= LOG_DEBUG
+ DEBUG_LOGGING
)

View File

@ -21,10 +21,18 @@ expression s;
@@
expression a, b;
@@
(
#define memzero
&
- memset(a, 0, b)
+ memzero(a, b)
)
@@
expression a, b;
@@
(
#define memzero
&
- bzero(a, b)
+ memzero(a, b)
)