At present the kselftest header can't be used with nolibc since it makes use of vprintf() which is not available in nolibc. Fortunately nolibc has a vfprintf() so we can just wrap that in order to allow kselftests to be built with nolibc and still use the standard kselftest headers with a small change to prevent the inclusion of the standard libc headers. This allows us to avoid open coding of KTAP output for selftests that need to use nolibc in order to test interfaces that are controlled by libc, we've got several open coded examples of this in the tree already.
As an example of using this the existing za-fork test is converted to use kselftest.h. The changes to kselftest and nolibc don't have any interaction until they are used by a test so could be merged separately if desired.
Signed-off-by: Mark Brown broonie@kernel.org --- Changes in v2: - Turns out nolibc has a vfprintf() already which we can use so do that. - Link to v1: https://lore.kernel.org/r/20230405-kselftest-nolibc-v1-0-63fbcd70b202@kernel...
--- Mark Brown (3): tools/nolibc/stdio: Implement vprintf() kselftest: Support nolibc kselftest/arm64: Convert za-fork to use kselftest.h
tools/include/nolibc/stdio.h | 6 ++ tools/testing/selftests/arm64/fp/Makefile | 2 +- tools/testing/selftests/arm64/fp/za-fork.c | 88 ++++++------------------------ tools/testing/selftests/kselftest.h | 2 + 4 files changed, 25 insertions(+), 73 deletions(-) --- base-commit: e8d018dd0257f744ca50a729e3d042cf2ec9da65 change-id: 20230405-kselftest-nolibc-cb2ce0446d09
Best regards,