• Yafang Shao's avatar
    compiler-gcc: Suppress -Wmissing-prototypes warning for all supported GCC · 689b097a
    Yafang Shao authored
    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: default avatarkernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202311031651.A7crZEur-lkp@intel.com/Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Cc: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20231106031802.4188-1-laoar.shao@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    689b097a
compiler-gcc.h 4.08 KB