Message ID | 87d2tuetoj.fsf@blackfin.pond.sub.org |
---|---|
State | New |
Headers | show |
On 04/16/2013 07:00 PM, Markus Armbruster wrote: > Alexey Kardashevskiy <aik@ozlabs.ru> writes: > >> On 04/16/2013 01:55 AM, Markus Armbruster wrote: >>> Alexey Kardashevskiy <aik@ozlabs.ru> writes: >>> >>>> On 04/15/2013 10:57 PM, Markus Armbruster wrote: >>>>> Alexey Kardashevskiy <aik@ozlabs.ru> writes: >>>>> >>>>>> On 04/15/2013 08:01 PM, Peter Maydell wrote: >>>>>>> On 15 April 2013 10:50, Alexey Kardashevskiy <aik@ozlabs.ru> wrote: >>>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: >>>>>>>> error: redundant redeclaration of '__assert_fail' >>>>>>>> [-Werror=redundant-decls] >>>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: >>>>>>>> note: previous declaration of '__assert_fail' was here >>>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:72:13: >>>>>>>> error: redundant redeclaration of '__assert_perror_fail' >>>>>>>> [-Werror=redundant-decls] >>>>>>> >>>>>>> This copy of assert.h seems to be broken. The declarations >>>>>>> should be guarded (by _ASSERT_H_DECLS in my system's copy). >>>>>> >>>>>> Debian? It uses eglibc which is fork (or clone?) of glibc. >>>>>> >>>>>>> If it's widespread we might have to work around this. >>>>>> >>>>>> It is in fedora 18 and glibc's git master branch. Why "if"? >>>>> >>>>> It's in Fedora 17, too, but I *don't* get a warning. Suspecting your >>>>> compiler. --version? >>>> >>>> >>>> powerpc64-linux-gcc 4.6.3, 4.7.2, 4.8.0, all the same. I'll try to >>>> track it down tomorrow why it all works when host and target are the >>>> same (pretty sure this is the cse) but I just do not get it... It is >>>> just me who sees obvious error in assert.h which is caused by >>>> -Wno-redundant-decls? Even if you do not hit this now, you will get >>>> there eventually. >>> >>> I don't doubt your gcc+libc is in error. I just don't want to lose a >>> useful warning because of that. >>> >>> Workaround: configure --disable-werror >> >> This workaround does NOT work if pragmas used. "#pragma GCC diagnostic >> error "-Wredundant-decls"" re-enables warnings as errors. > > Bummer. Could you try the appended patch? Tried, works, thanks!
Am 16.04.2013 um 11:00 hat Markus Armbruster geschrieben: > Alexey Kardashevskiy <aik@ozlabs.ru> writes: > > > On 04/16/2013 01:55 AM, Markus Armbruster wrote: > >> Alexey Kardashevskiy <aik@ozlabs.ru> writes: > >> > >>> On 04/15/2013 10:57 PM, Markus Armbruster wrote: > >>>> Alexey Kardashevskiy <aik@ozlabs.ru> writes: > >>>> > >>>>> On 04/15/2013 08:01 PM, Peter Maydell wrote: > >>>>>> On 15 April 2013 10:50, Alexey Kardashevskiy <aik@ozlabs.ru> wrote: > >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: > >>>>>>> error: redundant redeclaration of '__assert_fail' > >>>>>>> [-Werror=redundant-decls] > >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: > >>>>>>> note: previous declaration of '__assert_fail' was here > >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:72:13: > >>>>>>> error: redundant redeclaration of '__assert_perror_fail' > >>>>>>> [-Werror=redundant-decls] > >>>>>> > >>>>>> This copy of assert.h seems to be broken. The declarations > >>>>>> should be guarded (by _ASSERT_H_DECLS in my system's copy). > >>>>> > >>>>> Debian? It uses eglibc which is fork (or clone?) of glibc. > >>>>> > >>>>>> If it's widespread we might have to work around this. > >>>>> > >>>>> It is in fedora 18 and glibc's git master branch. Why "if"? > >>>> > >>>> It's in Fedora 17, too, but I *don't* get a warning. Suspecting your > >>>> compiler. --version? > >>> > >>> > >>> powerpc64-linux-gcc 4.6.3, 4.7.2, 4.8.0, all the same. I'll try to > >>> track it down tomorrow why it all works when host and target are the > >>> same (pretty sure this is the cse) but I just do not get it... It is > >>> just me who sees obvious error in assert.h which is caused by > >>> -Wno-redundant-decls? Even if you do not hit this now, you will get > >>> there eventually. > >> > >> I don't doubt your gcc+libc is in error. I just don't want to lose a > >> useful warning because of that. > >> > >> Workaround: configure --disable-werror > > > > This workaround does NOT work if pragmas used. "#pragma GCC diagnostic > > error "-Wredundant-decls"" re-enables warnings as errors. > > Bummer. Could you try the appended patch? > > diff --git a/configure b/configure > index 0788e27..41097a2 100755 > --- a/configure > +++ b/configure > @@ -3244,8 +3244,10 @@ fi > > pragma_disable_unused_but_set=no > cat > $TMPC << EOF > +#pragma GCC diagnostic push > #pragma GCC diagnostic ignored "-Wunused-but-set-variable" > #pragma GCC diagnostic ignored "-Wstrict-prototypes" > +#pragma GCC diagnostic pop Breaks gcc < 4.6, which doesn't have push/pop yet. Kevin
Kevin Wolf <kwolf@redhat.com> writes: > Am 16.04.2013 um 11:00 hat Markus Armbruster geschrieben: >> Alexey Kardashevskiy <aik@ozlabs.ru> writes: >> >> > On 04/16/2013 01:55 AM, Markus Armbruster wrote: >> >> Alexey Kardashevskiy <aik@ozlabs.ru> writes: >> >> >> >>> On 04/15/2013 10:57 PM, Markus Armbruster wrote: >> >>>> Alexey Kardashevskiy <aik@ozlabs.ru> writes: >> >>>> >> >>>>> On 04/15/2013 08:01 PM, Peter Maydell wrote: >> >>>>>> On 15 April 2013 10:50, Alexey Kardashevskiy <aik@ozlabs.ru> wrote: >> >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: >> >>>>>>> error: redundant redeclaration of '__assert_fail' >> >>>>>>> [-Werror=redundant-decls] >> >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:67:13: >> >>>>>>> note: previous declaration of '__assert_fail' was here >> >>>>>>> /home/alexey/pcipassthru/qemu-impreza/../lib4qemu/usr/include/assert.h:72:13: >> >>>>>>> error: redundant redeclaration of '__assert_perror_fail' >> >>>>>>> [-Werror=redundant-decls] >> >>>>>> >> >>>>>> This copy of assert.h seems to be broken. The declarations >> >>>>>> should be guarded (by _ASSERT_H_DECLS in my system's copy). >> >>>>> >> >>>>> Debian? It uses eglibc which is fork (or clone?) of glibc. >> >>>>> >> >>>>>> If it's widespread we might have to work around this. >> >>>>> >> >>>>> It is in fedora 18 and glibc's git master branch. Why "if"? >> >>>> >> >>>> It's in Fedora 17, too, but I *don't* get a warning. Suspecting your >> >>>> compiler. --version? >> >>> >> >>> >> >>> powerpc64-linux-gcc 4.6.3, 4.7.2, 4.8.0, all the same. I'll try to >> >>> track it down tomorrow why it all works when host and target are the >> >>> same (pretty sure this is the cse) but I just do not get it... It is >> >>> just me who sees obvious error in assert.h which is caused by >> >>> -Wno-redundant-decls? Even if you do not hit this now, you will get >> >>> there eventually. >> >> >> >> I don't doubt your gcc+libc is in error. I just don't want to lose a >> >> useful warning because of that. >> >> >> >> Workaround: configure --disable-werror >> > >> > This workaround does NOT work if pragmas used. "#pragma GCC diagnostic >> > error "-Wredundant-decls"" re-enables warnings as errors. >> >> Bummer. Could you try the appended patch? >> >> diff --git a/configure b/configure >> index 0788e27..41097a2 100755 >> --- a/configure >> +++ b/configure >> @@ -3244,8 +3244,10 @@ fi >> >> pragma_disable_unused_but_set=no >> cat > $TMPC << EOF >> +#pragma GCC diagnostic push >> #pragma GCC diagnostic ignored "-Wunused-but-set-variable" >> #pragma GCC diagnostic ignored "-Wstrict-prototypes" >> +#pragma GCC diagnostic pop > > Breaks gcc < 4.6, which doesn't have push/pop yet. The patch to configure makes sure push/pop works before we use it. When your gcc is too old, warnings aren't suppressed, and you may have to --disable-werror. I prefer that over breaking --disable-werror for everyone.
diff --git a/configure b/configure index 0788e27..41097a2 100755 --- a/configure +++ b/configure @@ -3244,8 +3244,10 @@ fi pragma_disable_unused_but_set=no cat > $TMPC << EOF +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wstrict-prototypes" +#pragma GCC diagnostic pop int main(void) { return 0; diff --git a/coroutine-ucontext.c b/coroutine-ucontext.c index 867a662..4bf2cde 100644 --- a/coroutine-ucontext.c +++ b/coroutine-ucontext.c @@ -169,6 +169,7 @@ Coroutine *qemu_coroutine_new(void) #ifdef CONFIG_VALGRIND_H #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE /* Work around an unused variable in the valgrind.h macro... */ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #endif static inline void valgrind_stack_deregister(CoroutineUContext *co) @@ -176,7 +177,7 @@ static inline void valgrind_stack_deregister(CoroutineUContext *co) VALGRIND_STACK_DEREGISTER(co->valgrind_stack_id); } #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE -#pragma GCC diagnostic error "-Wunused-but-set-variable" +#pragma GCC diagnostic pop #endif #endif diff --git a/include/ui/qemu-pixman.h b/include/ui/qemu-pixman.h index b032f52..882e2a3 100644 --- a/include/ui/qemu-pixman.h +++ b/include/ui/qemu-pixman.h @@ -8,11 +8,12 @@ /* pixman-0.16.0 headers have a redundant declaration */ #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wredundant-decls" #endif #include <pixman.h> #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE -#pragma GCC diagnostic error "-Wredundant-decls" +#pragma GCC diagnostic pop #endif #include "qemu/typedefs.h" diff --git a/ui/gtk.c b/ui/gtk.c index 1e105e2..c2c6e38 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -38,11 +38,12 @@ #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE /* Work around an -Wstrict-prototypes warning in GTK headers */ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstrict-prototypes" #endif #include <gtk/gtk.h> #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE -#pragma GCC diagnostic error "-Wstrict-prototypes" +#pragma GCC diagnostic pop #endif