The Linux next building selftests with gcc-13 found these build warnings and errors.
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
Build log: --------- Path: selftests/resctrl/resctrl_tests/
In file included from resctrl.h:24, from cat_test.c:11: cat_test.c: In function 'noncont_cat_run_test': ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t" \ | ^~~~~~~ cat_test.c:308:17: note: in expansion of macro '__cpuid_count' 308 | __cpuid_count(0x10, 1, eax, ebx, ecx, edx); | ^~~~~~~~~~~~~ ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t" \ | ^~~~~~~ cat_test.c:310:17: note: in expansion of macro '__cpuid_count' 310 | __cpuid_count(0x10, 2, eax, ebx, ecx, edx); | ^~~~~~~~~~~~~
Steps to reproduce: --- tuxmake --runtime podman --target-arch arm64 --toolchain gcc-13 \ --kconfig https://storage.tuxsuite.com/public/linaro/lkft/builds/2fDW3wG8BqWxf0afUI5f4... \ debugkernel dtbs dtbs-legacy headers kernel kselftest modules
Links: - https://storage.tuxsuite.com/public/linaro/lkft/builds/2fDW3wG8BqWxf0afUI5f4...
-- Linaro LKFT https://lkft.linaro.org
On 4/18/2024 2:37 AM, Naresh Kamboju wrote:
The Linux next building selftests with gcc-13 found these build warnings and errors.
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
Build log:
Path: selftests/resctrl/resctrl_tests/
In file included from resctrl.h:24, from cat_test.c:11: cat_test.c: In function 'noncont_cat_run_test': ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t" \ | ^~~~~~~ cat_test.c:308:17: note: in expansion of macro '__cpuid_count' 308 | __cpuid_count(0x10, 1, eax, ebx, ecx, edx); | ^~~~~~~~~~~~~ ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t" \ | ^~~~~~~ cat_test.c:310:17: note: in expansion of macro '__cpuid_count' 310 | __cpuid_count(0x10, 2, eax, ebx, ecx, edx); | ^~~~~~~~~~~~~
This is unexpected to me. kselftest.h intends to and still does define __cpuid_count() exactly the same as gcc does (in gcc/config/i386/cpuid.h):
255 #define __cpuid_count(level, count, a, b, c, d) \ 256 __asm__ __volatile__ ("cpuid\n\t" \ 257 : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ 258 : "0" (level), "2" (count))
Reinette