Messages in this thread | | | Date | Mon, 14 Apr 2008 10:30:38 +0100 | From | Al Viro <> | Subject | Re: linux-next: Tree for April 10 (arch/x86) |
| |
On Mon, Apr 14, 2008 at 04:43:20AM -0400, Jakub Jelinek wrote: > On Mon, Apr 14, 2008 at 10:34:40AM +0200, Ingo Molnar wrote: > > ... but reality called in and gcc added printf format checks as a gcc > > extension and even modifies the code to make it safe when the user gets > > it "wrong". > > GCC format string checking is only about warnings, GCC never modifies > the arguments passed to make them match the format string conversions.
Actually, how hard would it be to allow new modifiers recognized by format string checking? Hell, even being able to teach it that (in this family of functions) "%<d>u" should expect dma_addr_t, "%016<64>x" - u64, etc. would solve all the problems. Ideally we'd need something for things like IPv4 address (__be32 expected), IPv6 address (taking __be32 *), etc.
No magic, usual calling conventions - it'd still remain a valid C. We can do that in sparse and just tell gcc to STFU about these warnings, of course, but that's kind of things that is probably wanted by userland projects as well...
BTW, ISTR FreeBSD folks carrying gcc patches in their tree for something with similar purpose - project-specific format modifiers/specifiers. No idea how hard it would be to generalize, though - never looked at those in details...
| |