[Bug driver/58512] New: [Feature request] -Wformat extensions to accomodate custom rules

daniel.santos at pobox dot com gcc-bugzilla@gcc.gnu.org
Mon Sep 23 20:09:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58512

            Bug ID: 58512
           Summary: [Feature request] -Wformat extensions to accomodate
                    custom rules
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: driver
          Assignee: unassigned at gcc dot gnu.org
          Reporter: daniel.santos at pobox dot com

I am working on a Linux kernel patch set to add a feature comprable to glibc's
%m format specifier.  However, glibc's extensions uses errno which, of course,
doesn't exist in the kernel.  Therefore, if I wanted to use %m, I would trigger
-Wformat warnings due to the unexpected argument(s).

The Linux kernel currently has many extensions to printf
(http://lxr.free-electrons.com/source/lib/vsprintf.c#L1466) which operate by
adding a suffix to an existing format specifier, preventing any breakage due to
-Wformat.  But it is also limiting because new format specifiers must be
implemented via suffixes, which consequently increase data size (be it ever so
slightly).  It would be helpful to have a mechanism to tell gcc that you are
extending the format rule checks in x fashion.  For example:

* Define new archetype named "linux_printf" extending "printf"
* Remove %m rule.
* Add %m rule, defined as <takes signed int argument>.

Then in the __attribute__ printf declaration, one would simply use the
linux_printf for the archetype name.



More information about the Gcc-bugs mailing list