https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47781

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |msebor at gcc dot gnu.org

--- Comment #18 from Martin Sebor <msebor at gcc dot gnu.org> ---
The Linux kernel also has a bunch of printf format extensions that GCC doesn't
know anything about:
https://www.kernel.org/doc/Documentation/printk-formats.txt.  The extensions
take the form of a suffix to the %p directive and take a pointer argument so
the GCC format checker treats them all as a plain old %p but the sprintf
optimization pass punts when it sees a %p because it doesn't know how much
output it might produce (largely because of the Linux kernel extensions, but
partly also because each OS has its own slightly different format even for
plain %p and it was thought to be simpler to punt than to maintain a database
of formats for all supported systems).  It would be nice if there were an easy
way to describe these extensions not just for the benefit of the format checker
but also so that the sprintf pass could do its own thing (i.e., check for
buffer overflow).

Reply via email to