On Wed, Dec 18, 2024 at 05:33:24PM +0100, Uros Bizjak wrote: > On Wed, Dec 18, 2024 at 5:08 PM Naresh Kamboju > <naresh.kamboju@xxxxxxxxxx> wrote: > > > > The Rust gcc builds failed due to following build warnings / errors on the > > x86_64 and arm64 architectures with selftests/rust/config on the Linux > > next-20241216...next-20241218. > > > > First seen on the next-20241216 tag. > > Good: next-20241213 > > Bad: next-20241216 > > > > Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx> > > > > Anders bisected this regressions and found, > > # first bad commit: > > [20b3c3eccd9361c9976af640be280526bef72248] > > percpu: use TYPEOF_UNQUAL() in variable declarations > > > > Build log: > > ------- > > arch/x86/include/asm/current.h:49:9: error: call to undeclared > > function '__typeof_unqual__'; ISO C99 and later do not support > > implicit function declarations [-Wimplicit-function-declaration] > > arch/x86/include/asm/current.h:49:9: error: expected ';' after expression > > arch/x86/include/asm/current.h:49:9: error: use of undeclared > > identifier 'pscr_ret__' > > __typeof_unqual__ is a keyword in c23 (and an extension in gcc-14+ and > clang-19+). > > https://en.cppreference.com/w/c/language/typeof > https://learn.microsoft.com/en-us/cpp/c-language/typeof-unqual-c?view=msvc-170 > > The compiler support is detected in init/Kconfig: > > config CC_HAS_TYPEOF_UNQUAL > def_bool $(success,echo 'int foo (int a) { __typeof_unqual__(a) b > = a; return b; }' | $(CC) -x c - -S -o /dev/null) > > so, if your compiler doesn't support this keyword, > CC_HAS_TYPEOF_UNQUAL should not be enabled and > include/linux/compiler.h should disable usage of __typeof_unqual__: > > #if defined(CONFIG_CC_HAS_TYPEOF_UNQUAL) && !defined(__CHECKER__) > # define TYPEOF_UNQUAL(exp) __typeof_unqual__(exp) > #else > # define TYPEOF_UNQUAL(exp) __typeof__(exp) > #endif > > Can you please investigate what happens here for your build? This is the bindgen program for generating Rust bindings. Tuxmake is using bindgen 0.66.1 and I was able to reproduce the failures with that version inside a container. I have bindgen 0.70.1 installed on my system and that seems to parse __typeof_unqual__ okay. I don't know how bindgen works. Maybe the Rust developers can comment? regards, dan carpenter