Re: CLANG reports an error with %b in printf(9)

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Tue, 1 Oct 2013 21:41:42 +0200
On Oct 1, 2013, at 21:30, Luigi Rizzo <rizzo_at_iet.unipi.it> wrote:
> This is on HEAD -- while compiling the kernel with CLANG and slightly
> higher warns level, i get errors of this kind (in multiple places):
> 
> /usr/home/luigi/FreeBSD/head/sys/cam/cam_xpt.c:1069:27: error: invalid conversion specifier
>      'b' [-Werror,-Wformat-invalid-specifier]
>                printf("%s%d: quirks=0x%b\n", periph->periph_name,
>                                       ~^
> /usr/home/luigi/FreeBSD/head/sys/cam/cam_xpt.c:1070:36: error: data argument not used by
>      format string [-Werror,-Wformat-extra-args]
>                    periph->unit_number, quirks, bit_string);
> 
> Does anyone know how hard it is to either disable the warning locally
> (for a statement, function or file), or better to teach CLANG that
> printf(9) uses two arguments for %b ?

Hi Luigi,

It looks like you are overriding CWARNFLAGS?  If you are using clang
from base, you can add -fformat-extensions, which has support for our
non-standard %b and %D specifiers.  For clang from ports, there is no
solution except -Wno-format.  See also the start of sys/conf/kern.mk.

-Dimitry


Received on Tue Oct 01 2013 - 17:41:57 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:42 UTC