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

Re: [PATCH 0/4] varargs functions with __attributes__(())

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 11, 2024, 15:17 UTC
Message-ID
<xmqqcyony0ej.fsf@gitster.g>
In-Reply-To
<20240611081735.GI3248245@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 22 quoted lines
> 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.

Previous: Jeff King
Message 9 of 9 in “varargs functions with __attributes__(())”
  1. 0/4 varargs functions with __attributes__(())Junio C Hamano, Jun 8, 2024
  2. 1/4 __attribute__: trace2_region_enter_printf() is like "printf"Junio C Hamano, Jun 8, 2024
  3. Patrick SteinhardtJun 10, 2024
  4. Junio C HamanoJun 10, 2024
  5. 2/4 __attribute__: remove redundant attribute declaration for git_die_config()Junio C Hamano, Jun 8, 2024
  6. 3/4 __attribute__: mark some functions with LAST_ARG_MUST_BE_NULLJunio C Hamano, Jun 8, 2024
  7. 4/4 __attribute__: add a few missing format attributesJunio C Hamano, Jun 8, 2024
  8. Jeff KingJun 11, 2024
  9. Junio C HamanoJun 11, 2024

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.