Messages in this thread | | | From | Nick Desaulniers <> | Date | Tue, 1 Mar 2022 11:49:22 -0800 | Subject | UAPI_HEADER_TEST and CC_CAN_LINK dependency |
| |
Hello Masahiro,
We'd like to be able to better test UAPI headers via CONFIG_UAPI_HEAD_TEST=y with clang builds during cross compiling. We're finding that CC_CAN_LINK=y is not enabled because clang (unlike gcc) isn't configured with a cross libc in hand, and one may not be available in the environment. This is a similar constraint to the prebuilt GCC images distributed on kernel.org.
Looking at commit d6fc9fcbaa65 ("kbuild: compile-test exported headers to ensure they are self-contained")
Simply removing the dependency on CC_CAN_LINK=y allows us to run the UAPI header tests, which pass on ARCH=arm64 and native x86_64 builds. https://android-review.googlesource.com/c/kernel/common/+/1991156
I assume there may be some additional constraints perhaps for other architectures or certain configs?
Another suggestion from the bionic maintainer to ensure the tests are more hermetic/self-contained would be to add -ffreestanding to the compiler invocations of these tests.
Do you have thoughts on how we might be able to eliminate the dependency on CC_CAN_LINK for UAPI_HEADER_TEST? Otherwise, I suspect we will have to use `USERCFLAGS=--sysroot=/path/to/sysroot` to make CC_CAN_LINK work for clang cross compilation. See also: commit f67695c9962e ("kbuild: Add environment variables for userprogs flags")
-- Thanks, ~Nick Desaulniers
| |