On 03 Mar 2020 17:34, Simon Marchi wrote: > While compiling with clang, I noticed it didn't catch cases where my > function declaration didn't match my function definition. This is > normally caught by gcc with -Wmissing-declarations. > > On clang, this is caught by -Wmissing-prototypes instead. > > Note that on gcc, -Wmissing-prototypes also exists, but is only valid > for C and Objective-C. It gets correctly rejected by the configure > script since gcc rejects it with: > > cc1plus: error: command line option '-Wmissing-prototypes' is valid for C/ObjC but not for C++ -Werror > > So this warning flag ends up not used for gcc (which is what we want). so ccache has a long standing bug where it mishandles -Werror with other -W options causing the configure test to pass when it shouldn't. https://github.com/ccache/ccache/issues/738 that means ccache+gcc builds of gdb are full of annoying logs: CXX cli/cli-decode.o cc1plus: warning: command-line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++ i get that the configure script here isn't wrong, but there aren't any knobs in here that i can tweak to workaround the issue either, and i'm trying to avoid carrying patches in all my local branches, and configure files are kind of meant to deal with all sorts of system warts. so random terrible idea below. -mike --- a/gdbsupport/warning.m4 +++ b/gdbsupport/warning.m4 @@ -51,10 +51,15 @@ build_warnings="-Wall -Wpointer-arith \ -Wdeprecated-copy-dtor \ -Wredundant-move \ -Wmissing-declarations \ --Wmissing-prototypes \ -Wstrict-null-sentinel \ " +# GCC doesn't support this flag currently, and probing via ccache breaks. +# https://github.com/ccache/ccache/issues/738 +if test "${GCC}" != yes ; then + build_warnings="$build_warnings -Wmissing-prototypes" +fi + case "${host}" in *-*-mingw32*) # Enable -Wno-format by default when using gcc on mingw since many