Gcc issue, perhaps Paolo [cc'ed] got an idea. Alexey Kardashevskiy <a...@ozlabs.ru> writes:
> On 04/16/2013 08:48 AM, Alexey Kardashevskiy wrote: >> On 04/16/2013 01:55 AM, Markus Armbruster wrote: >>> Alexey Kardashevskiy <a...@ozlabs.ru> writes: >>> >>>> On 04/15/2013 10:57 PM, Markus Armbruster wrote: >>>>> Alexey Kardashevskiy <a...@ozlabs.ru> writes: >>>>> >>>>>> On 04/15/2013 08:01 PM, Peter Maydell wrote: >>>>>>> On 15 April 2013 10:50, Alexey Kardashevskiy <a...@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. > > > Kind of offtopic but still... > > I think this is just beautiful. Fedora18, x86_64, NO cross > compiler. gcc does not apply -Wredundant-decls to /usr/include/* but > does it for all other headers and in the case of cross compilation I > hit this case. > > Does anyone know the way to tell gcc that libc headers are not at > /usr/include but somewhere else? > > > > [aik@aik ~]$ cp /usr/include/assert.h ./ > [aik@aik ~]$ > [aik@aik ~]$ cat a.c > #pragma GCC diagnostic error "-Wredundant-decls" > > #ifdef USEMINE > #include "assert.h" > #include "assert.h" > #else > #include <assert.h> > #include <assert.h> > #endif > > int main(int argc, char **argv){ return 0; } > [aik@aik ~]$ > [aik@aik ~]$ gcc a.c -o a > [aik@aik ~]$ gcc a.c -o a -DUSEMINE > In file included from a.c:5:0: > assert.h:68:13: error: redundant redeclaration of ‘__assert_fail’ > [-Werror=redundant-decls] > In file included from a.c:4:0: > assert.h:68:13: note: previous declaration of ‘__assert_fail’ was here > In file included from a.c:5:0: > assert.h:73:13: error: redundant redeclaration of > ‘__assert_perror_fail’ [-Werror=redundant-decls] > In file included from a.c:4:0: > assert.h:73:13: note: previous declaration of ‘__assert_perror_fail’ was here > In file included from a.c:5:0: > assert.h:80:13: error: redundant redeclaration of ‘__assert’ > [-Werror=redundant-decls] > In file included from a.c:4:0: > assert.h:80:13: note: previous declaration of ‘__assert’ was here > cc1: some warnings being treated as errors > [aik@aik ~]$