From: Junio C Hamano Date: Tue, 11 Jun 2024 15:17:08 GMT Subject: Re: [PATCH 0/4] varargs functions with __attributes__(()) Message-ID: In-Reply-To: <20240611081735.GI3248245@coredump.intra.peff.net> Jeff King writes: > On Sat, Jun 08, 2024 at 11:37:43AM -0700, Junio C Hamano wrote: > >> There are several varargs functions that take either NULL-terminated >> list of parameters, or printf-like format followed by list of >> parameters, that are not declared as such with __attributes__(()). >> >> Adding such a missing attribute to trace2_region_enter_printf() >> revealed that an existing call to it was trying to format a value of >> type size_t using "%d", which is not such an excellent idea. Other >> functions that were lacking attributes fortunately did not have any >> broken existing callers. > > Great, I am happy to see these. I assume you found them all by grepping? > > I wonder if there is a way to convince the compiler (or coccinelle) to > complain about any varargs function that does not have one of our > usual annotations. It's possible to have other conventions (e.g., an > "int" up front specifying the number of entries) but in practice I doubt > we would ever use one. > > Still, I suspect the answer is probably "no", there is not an easy way > to do it. I just went from grepping for fixed "...)" in *.[ch] files. I do admit I wished some form of automation, but didn't come up with one. I was happy that the exercise found a real bug ;-) I started it only as a clean-up topic.