[PATCH] Add FreeBSD kernel printf extensions

Dimitry Andric dimitry at andric.com
Fri Jan 23 13:31:07 PST 2015


Hi rsmith, aaron.ballman, hans, joerg,

In FreeBSD, we have been carrying around a custom patch for clang, since about four and a half years, to enable checking the FreeBSD kernel specific printf format specifiers: %b, %D, %r and %y.  This patch was based on an earlier custom patch for gcc, with similar functionality, and it added a new -fformat-extensions option to enable those non-standard specifiers.

A few years ago we tried getting this patch upstreamed to llvm/clang, but it was not met with great enthusiasm.  I think this was mostly because adding an option was seen as ugly, and even then, the option name did not convey that it was specifically meant for FreeBSD only.

I have now tried to massage the patch so that it is hopefully more palatable:
* It adds a new __freebsd_kprintf__ format string type, which enables checking when used in __attribute__((format(...))) attributes
* Checks %b, %D, %r and %y specifiers, using existing diagnostic messages
* Adds test cases for all these specifiers

Now, I know the printf format checking might be due for a big overhaul, and this patch is not the prettiest around, but please consider that it implements functionality that we really need, and use.  So I would rather get this in, and have it be part of some later restructuring, instead of having to forward-port it each new release... :)

http://reviews.llvm.org/D7154

Files:
  include/clang/Analysis/Analyses/FormatString.h
  include/clang/Sema/Sema.h
  lib/Analysis/FormatString.cpp
  lib/Analysis/PrintfFormatString.cpp
  lib/Sema/SemaChecking.cpp
  lib/Sema/SemaDeclAttr.cpp
  test/Sema/attr-format.c
  test/Sema/format-strings-freebsd.c

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7154.18692.patch
Type: text/x-patch
Size: 15897 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150123/25fcf5c7/attachment.bin>


More information about the cfe-commits mailing list