On Sun, Nov 5, 2023 at 7:18 PM Yafang Shao <laoar.shao@xxxxxxxxx> wrote: > > The kernel supports a minimum GCC version of 5.1.0 for building. However, > the "__diag_ignore_all" directive only suppresses the > "-Wmissing-prototypes" warning for GCC versions >= 8.0.0. As a result, when > building the kernel with older GCC versions, warnings may be triggered. The > example below illustrates the warnings reported by the kernel test robot > using GCC 7.5.0: > > compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 > All warnings (new ones prefixed by >>): > > kernel/bpf/helpers.c:1893:19: warning: no previous prototype for 'bpf_obj_new_impl' [-Wmissing-prototypes] > __bpf_kfunc void *bpf_obj_new_impl(u64 local_type_id__k, void *meta__ign) > ^~~~~~~~~~~~~~~~ > kernel/bpf/helpers.c:1907:19: warning: no previous prototype for 'bpf_percpu_obj_new_impl' [-Wmissing-prototypes] > __bpf_kfunc void *bpf_percpu_obj_new_impl(u64 local_type_id__k, void *meta__ign) > [...] > > To address this, we should also suppress the "-Wmissing-prototypes" warning > for older GCC versions. "#pragma GCC diagnostic push" is supported as > of GCC 4.6, and both "-Wmissing-prototypes" and "-Wmissing-declarations" > are supported for all the GCC versions that we currently support. > Therefore, it is reasonable to suppress these warnings for all supported > GCC versions. > > With this adjustment, it's important to note that after implementing > "__diag_ignore_all", it will effectively suppress warnings for all the > supported GCC versions. > > In the future, if you wish to suppress warnings that are only supported on > higher GCC versions, it is advisable to explicitly use "__diag_ignore" to > specify the GCC version you are targeting. > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Closes: https://lore.kernel.org/oe-kbuild-all/202311031651.A7crZEur-lkp@xxxxxxxxx/ > Suggested-by: Arnd Bergmann <arnd@xxxxxxxx> > Signed-off-by: Yafang Shao <laoar.shao@xxxxxxxxx> > Cc: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > --- > include/linux/compiler-gcc.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h > index 7af9e34..80918bd 100644 > --- a/include/linux/compiler-gcc.h > +++ b/include/linux/compiler-gcc.h > @@ -138,7 +138,7 @@ > #endif > > #define __diag_ignore_all(option, comment) \ > - __diag_GCC(8, ignore, option) > + __diag(__diag_GCC_ignore option) Arnd, does this look good to you? If so, pls ack.