On Fri, Jul 26, 2024 at 07:25:21AM +0000, Jari Ruusu wrote:
Some older systems still compile kernels with old gcc version.
$ grep -B3 "^GNU C" linux-5.10.223-rc1/Documentation/Changes ====================== =============== ======================================== Program Minimal version Command to check the version ====================== =============== ======================================== GNU C 4.9 gcc --version
These warnings and errors show up when compiling with gcc 4.9.2
UPD include/config/kernel.release UPD include/generated/uapi/linux/version.h UPD include/generated/utsrelease.h CC scripts/mod/empty.o In file included from ././include/linux/compiler_types.h:65:0, from <command-line>:0: ./include/linux/compiler_attributes.h:29:29: warning: "__GCC4_has_attribute___uninitialized__" is not defined [-Wundef] # define __has_attribute(x) __GCC4_has_attribute_##x ^ ./include/linux/compiler_attributes.h:278:5: note: in expansion of macro '__has_attribute' #if __has_attribute(__uninitialized__) ^ [SNIP] AR arch/x86/events/built-in.a CC arch/x86/kvm/../../../virt/kvm/kvm_main.o In file included from ././include/linux/compiler_types.h:65:0, from <command-line>:0: ./include/linux/compiler_attributes.h:29:29: error: "__GCC4_has_attribute___uninitialized__" is not defined [-Werror=undef] # define __has_attribute(x) __GCC4_has_attribute_##x ^ ./include/linux/compiler_attributes.h:278:5: note: in expansion of macro '__has_attribute' #if __has_attribute(__uninitialized__) ^ cc1: all warnings being treated as errors make[2]: *** [scripts/Makefile.build:286: arch/x86/kvm/../../../virt/kvm/kvm_main.o] Error 1 make[1]: *** [scripts/Makefile.build:503: arch/x86/kvm] Error 2 make: *** [Makefile:1832: arch/x86] Error 2
Following patch fixes this. Upstream won't need this because newer kernels are not compilable with gcc 4.9
--- ./include/linux/compiler_attributes.h.OLD +++ ./include/linux/compiler_attributes.h @@ -37,6 +37,7 @@ # define __GCC4_has_attribute___nonstring__ 0 # define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8) # define __GCC4_has_attribute___no_sanitize_undefined__ (__GNUC_MINOR__ >= 9) +# define __GCC4_has_attribute___uninitialized__ 0 # define __GCC4_has_attribute___fallthrough__ 0 # define __GCC4_has_attribute___warning__ 1 #endif
Fixes: upstream fd7eea27a3ae "Compiler Attributes: Add __uninitialized macro" Signed-off-by: Jari Ruusu jariruusu@protonmail.com
Please submit this in a format in which we can apply it, thanks!
greg k-h