On 08/22/2012 01:42 PM, Stefan Weil wrote: > GLib 2.0 include files use __printf__ for the format attribute > which resolves to native format strings on w32 hosts. > > QEMU wants standard format strings instead of native format > strings, so we simply change any declaration with __printf__ > to use __gnu_printf__. > > This works because all basic printf functions support both > kinds of format strings. > > This fixes a compiler warning: > > qapi/string-output-visitor.c: In function ‘print_type_int’: > qapi/string-output-visitor.c:34:5: warning: unknown conversion type character > ‘l’ in format [-Wformat] > qapi/string-output-visitor.c:34:5: warning: too many arguments for format > [-Wformat-extra-args] > > Signed-off-by: Stefan Weil <s...@weilnetz.de> > --- > compiler.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/compiler.h b/compiler.h > index 07ba1f8..c734a71 100644 > --- a/compiler.h > +++ b/compiler.h > @@ -44,6 +44,11 @@ > /* Use gnu_printf when supported (qemu uses standard format strings). */ > # define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2))) > # define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m))) > +# if defined(_WIN32) > + /* Map __printf__ to __gnu_printf__ because we want standard format > strings > + * even when MinGW or GLib include files use __printf__. */ > +# define __printf__ __gnu_printf__ > +# endif
Don't you need to make this conditional on the gcc version? That is, gcc 4.4 added __gnu_printf__, but gcc 4.3 understands only __printf__ and attempts to pass __gnu_printf__ will cause compilation failure. -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature