On Mon, Sep 13, 2010 at 8:02 PM, Stefan Weil <w...@mail.berlios.de> wrote: > Since version 4.4.x, gcc supports additional format attributes. > __attribute__ ((format (gnu_printf, 1, 2))) > should be used instead of > __attribute__ ((format (printf, 1, 2)) > because QEMU always uses standard format strings (even with mingw32). > > For older compilers, we simply define gnu_printf = printf, > so they work with the new format attribute, too. > > Signed-off-by: Stefan Weil <w...@mail.berlios.de> > --- > configure | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/configure b/configure > index 4061cb7..1300879 100755 > --- a/configure > +++ b/configure > @@ -148,6 +148,17 @@ for flag in $gcc_flags; do > fi > done > > +# Check gnu_printf (supported by gcc >= 4.4.x). > +cat > $TMPC << EOF > +static void test(const char *format, ...) > + __attribute__ ((format (gnu_printf, 1, 2))); > +static void test(const char *format, ...) {} > +int main(void) { test("\n"); return 0; } > +EOF > +if ! compile_prog "-Werror" ""; then > + QEMU_CFLAGS="-Dgnu_printf=printf $QEMU_CFLAGS"
This could cause problems, for example if system headers declared a function called gnu_printf. I'd introduce CONFIG_GCC_FMT_ATTR_GNU_PRINTF and adjust GCC_FMT_ATTR definition based on that.