git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] contrib/coccinelle: pass include paths to spatch(1)

From
Toon Claes <toon@iotcl.com>
Date
Dec 10, 2025, 13:13 UTC
Message-ID
<20251210-toon-cocci-memzero-v1-2-ae916a79065b@iotcl.com>
In-Reply-To
<20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>

In the previous commit a new coccinelle rule is added. But neiter `make coccicheck` nor `meson compile coccicheck` did detect a case in builtin/last-modified.c.

This case involves the field `scratch` in `struct last_modified`. This field is of type `struct bitmap` and that struct has a member `eword_t *words`. Both are defined in `ewah/ewok.h`. Now, while builtin/last-modified.c does include that header (with the subdir in the #include directive), it seems coccinelle does not process it. So it's unaware of the type of `words` in the bitmap, and it doesn't recognize the rule from previous commit that uses:

    type T;
    T *ptr;

Fix coccicheck by passing all possible include paths inside the Git project so spatch(1) can find the headers and can determine the types.

Signed-off-by: Toon Claes <toon@iotcl.com>
---
 Makefile                       | 2 +-
 contrib/coccinelle/meson.build | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 6fc322ff88..46d07b2d52 100644
--- a/Makefile
+++ b/Makefile
@@ -981,7 +981,7 @@ SANITIZE_LEAK =
 SANITIZE_ADDRESS =
 
 # For the 'coccicheck' target
-SPATCH_INCLUDE_FLAGS = --all-includes
+SPATCH_INCLUDE_FLAGS = --all-includes $(addprefix -I ,compat ewah refs sha256 trace2 win32 xdiff)
 SPATCH_FLAGS =
 SPATCH_TEST_FLAGS =
 
diff --git a/contrib/coccinelle/meson.build b/contrib/coccinelle/meson.build
index dc3f73c2e7..ae7f5b5460 100644
--- a/contrib/coccinelle/meson.build
+++ b/contrib/coccinelle/meson.build
@@ -50,6 +50,11 @@ foreach header : headers_to_check
   coccinelle_headers += meson.project_source_root() / header
 endforeach
 
+coccinelle_includes = []
+foreach path : ['compat', 'ewah', 'refs', 'sha256', 'trace2', 'win32', 'xdiff']
+  coccinelle_includes += ['-I', meson.project_source_root() / path]
+endforeach
+
 patches = [ ]
 foreach source : coccinelle_sources
   patches += custom_target(
@@ -58,6 +63,7 @@ foreach source : coccinelle_sources
       '--all-includes',
       '--sp-file', concatenated_rules,
       '--patch', meson.project_source_root(),
+      coccinelle_includes,
       '@INPUT@',
     ],
     input: meson.project_source_root() / source,
-- 
2.52.0
Previous: Toon ClaesNext: Patrick Steinhardt
Message 6 of 10 in “Add MEMZERO_ARRAY() macro and use it in coccinelle”
  1. 0/2 Add MEMZERO_ARRAY() macro and use it in coccinelleToon Claes, Dec 10, 2025
  2. 1/2 git-compat-util: introduce MEMZERO_ARRAY() macroToon Claes, Dec 10, 2025
  3. Junio C HamanoDec 11, 2025
  4. René ScharfeDec 12, 2025
  5. Toon ClaesDec 19, 2025
  6. 2/2 contrib/coccinelle: pass include paths to spatch(1)Toon Claes, Dec 10, 2025
  7. Patrick SteinhardtDec 11, 2025
  8. Junio C HamanoDec 12, 2025
  9. Junio C HamanoDec 13, 2025
  10. Junio C HamanoDec 13, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.