On 17/07/2024 17:54, Junio C Hamano wrote: > Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> writes: > >> With at least glibc 2.39, glibc provides a function declaration that >> matches with this POSIX interface: >> >> int regexec(const regex_t *restrict preg, const char *restrict string, >> size_t nmatch, regmatch_t pmatch[restrict], int eflags); >> >> such prototype requires variable-length-array for `pmatch'. >> ... >> Thus, sparse reports this error: >> >>> ../add-patch.c: note: in included file (through ../git-compat-util.h): >>> /usr/include/regex.h:682:41: error: undefined identifier '__nmatch' >>> /usr/include/regex.h:682:41: error: bad constant expression type >>> /usr/include/regex.h:682:41: error: Variable length array is used. Yes, I noted this about 2 years ago! If memory serves, it was when the libc6-dev package went from v2.31 to 2.35 (well 2.31-0ubuntu9.9). As I said at the time, this only affected glibc platforms (so not newlib on cygwin for example) of a certain vintage, so I just added SPARSE_FLAGS += -D__STDC_NO_VLA__ to my config.mak file. > I get the same with > > $ sparse --version > v0.6.4-66-g0196afe1 > I mentioned this problem to Luc on the sparse mailing list[1] and he produced a patch which 'fixed' the problem in one way, but caused a different problem[2]. Namely, because git passes -Wvla to gcc, it now issues the 'used vla' warnings, which gcc does not because of some '# pragma GCC diagnostic ignored "-Wvla"' which sparse does not honor! :( So, his patch was not applied in the end. ATB, Ramsay Jones The sparse mailing list archive can be found at: https://lore.kernel.org/linux-sparse The messages below were from December 2023 (approx. 20/12/2023) [1] Message-ID: <6f853a6b-9ac3-4bfd-a968-89d43fbcce2a@xxxxxxxxxxxxxxxxxxxx> [2] Message-ID: <24cb6194-d04d-4c80-bd95-4f7356667884@xxxxxxxxxxxxxxxxxxxx>