--- Comment #1 from joseph at codesourcery dot com 2008-10-08 16:15 ---
Subject: Re: New: bogus warnings on x86_64-mingw32 due to
attribute((format(printf))) breakage
On Wed, 8 Oct 2008, mikpe at it dot uu dot se wrote:
When gcc is configured to generate code for x86_64-pc-mingw32, that is MinGW
for 64-bit Windows, attribute((format(printf))) is redefined by the backend to
be compatible with MSVC's runtime library, which differs significantly from
C99.
Correct. This is the conclusion we eventually reached, that printf
would be for the system formats (e.g. for a function wrapping a call to a
system function), that gnu_printf would be for the formats accepted by
the GNU C Library (including GNU extensions) on all platforms and that
ms_printf would be for the MSVC formats, on Windows platforms only.
The program below illustrates the issue. It declares a private C99-compliant
snprintf() implementation and invokes it with %zu and %llx formats. This
triggers the following bogus warnings on x86_64-pc-mingw32:
Use gnu_printf for such an implementation.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37768