The Linux next building selftests with gcc-13 found these build warnings
and errors.
Reported-by: Linux Kernel Functional Testing <[email protected]>
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/2fDW3wG8BqWxf0afUI5f4wkArPi/config
\
debugkernel dtbs dtbs-legacy headers kernel kselftest modules
Links:
- https://storage.tuxsuite.com/public/linaro/lkft/builds/2fDW3wG8BqWxf0afUI5f4wkArPi/
--
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 <[email protected]>
>
> 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