Re: [PATCH v3 9/9] selftests: Add build infrastructure along with README

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 25, 2024 at 05:54:08PM +0530, Dev Jain wrote:

> Add arm target, individual Makefile targets, and instructions to build the
> tests, along with .gitignore files. All the Makefiles are similar to
> selftests/arm64, except abi: use TEST_CUSTOM_PROGS to override the make
> rule from lib.mk. Also, do not build ptrace_64 if we are running a
> 32-bit kernel.

Also the documentation which could probably go separately.

> +- This is a series of compatibility tests, wherein the source files are
> +  built statically into a 32 bit ELF; they should pass on both 32 and 64
> +  bit kernels. They are not built or run but just skipped completely when
> +  env-variable ARCH is found to be different than 'arm64' or 'arm' and
> +  `uname -m` reports other than 'aarch64', 'armv7l' or 'armv8l'.

These are just plain old tests for arm, the fact that we can use them to
test 32 bit mode on a 64 bit host is a nice bonus but the tests are just
as useful with actual arm hardware.

> +- If building the tests on a 64-bit kernel, please ensure that the kernel is
> +  built with CONFIG_COMPAT enabled.

Running, not building.

> +- Holding true the above, ARM KSFT tests can be run within the KSelfTest
> +  framework using standard Linux top-level-makefile targets. Please set
> +  $(CROSS_COMPILE) to 'arm-linux-gnueabi-' or 'arm-linux-gnueabihf-'.

Or whatever your toolchain is set to!  We should also consider the
LLVM=1 case here for building with clang (which is even easier as it
supports all architectures in a single binary).

> +      $ make TARGETS=arm kselftest-clean
> +      $ make $(CROSS_COMPILE) TARGETS=arm kselftest

> +      or

> +      $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
> +		INSTALL_PATH=<your-installation-path> install

> +      or, alternatively, only specific arm/ subtargets can be picked:

> +      $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
> +		ARM_SUBTARGETS="signal" INSTALL_PATH=<your-installation-path> \
> +			install

I would expect the Makefile to have machinery which if we're building
for arm64 would use CROSS_COMPILE_COMPAT here and force 32 bit builds.

> +# Do not build 64-bit programs if running on a native 32-bit kernel
> +UNAME_M := $(shell uname -m)
> +ifneq (,$(filter $(UNAME_M),aarch64 arm64))
> +TEST_CUSTOM_PROGS := $(OUTPUT)/ptrace_64

Where we're building shouldn't affect what gets run - it is very common
especially in CI systems to build on one system and then run the tests
on a completely separate machine.

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux