mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
selftests/nolibc: add x32 test configuration
Nolibc supports the x32 ABI on x86. Add a testcase to make sure the support stays functional. QEMU user does not have support for x32, so skip the test there. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Willy Tarreau <w@1wt.eu> Link: https://lore.kernel.org/r/20250712-nolibc-x32-v1-2-6d81cb798710@weissschuh.net
This commit is contained in:
parent
d5094bcb5b
commit
b9e5036317
2 changed files with 18 additions and 1 deletions
|
@ -47,6 +47,7 @@ XARCH_riscv = riscv64
|
||||||
XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
|
XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
|
||||||
|
|
||||||
# map from user input variants to their kernel supported architectures
|
# map from user input variants to their kernel supported architectures
|
||||||
|
ARCH_x32 = x86
|
||||||
ARCH_armthumb = arm
|
ARCH_armthumb = arm
|
||||||
ARCH_ppc = powerpc
|
ARCH_ppc = powerpc
|
||||||
ARCH_ppc64 = powerpc
|
ARCH_ppc64 = powerpc
|
||||||
|
@ -68,6 +69,7 @@ ARCH := $(or $(ARCH_$(XARCH)),$(XARCH))
|
||||||
# kernel image names by architecture
|
# kernel image names by architecture
|
||||||
IMAGE_i386 = arch/x86/boot/bzImage
|
IMAGE_i386 = arch/x86/boot/bzImage
|
||||||
IMAGE_x86_64 = arch/x86/boot/bzImage
|
IMAGE_x86_64 = arch/x86/boot/bzImage
|
||||||
|
IMAGE_x32 = arch/x86/boot/bzImage
|
||||||
IMAGE_x86 = arch/x86/boot/bzImage
|
IMAGE_x86 = arch/x86/boot/bzImage
|
||||||
IMAGE_arm64 = arch/arm64/boot/Image
|
IMAGE_arm64 = arch/arm64/boot/Image
|
||||||
IMAGE_arm = arch/arm/boot/zImage
|
IMAGE_arm = arch/arm/boot/zImage
|
||||||
|
@ -97,6 +99,7 @@ IMAGE_NAME = $(notdir $(IMAGE))
|
||||||
# default kernel configurations that appear to be usable
|
# default kernel configurations that appear to be usable
|
||||||
DEFCONFIG_i386 = defconfig
|
DEFCONFIG_i386 = defconfig
|
||||||
DEFCONFIG_x86_64 = defconfig
|
DEFCONFIG_x86_64 = defconfig
|
||||||
|
DEFCONFIG_x32 = defconfig
|
||||||
DEFCONFIG_x86 = defconfig
|
DEFCONFIG_x86 = defconfig
|
||||||
DEFCONFIG_arm64 = defconfig
|
DEFCONFIG_arm64 = defconfig
|
||||||
DEFCONFIG_arm = multi_v7_defconfig
|
DEFCONFIG_arm = multi_v7_defconfig
|
||||||
|
@ -122,6 +125,7 @@ DEFCONFIG_m68k = virt_defconfig
|
||||||
DEFCONFIG_sh4 = rts7751r2dplus_defconfig
|
DEFCONFIG_sh4 = rts7751r2dplus_defconfig
|
||||||
DEFCONFIG = $(DEFCONFIG_$(XARCH))
|
DEFCONFIG = $(DEFCONFIG_$(XARCH))
|
||||||
|
|
||||||
|
EXTRACONFIG_x32 = -e CONFIG_X86_X32_ABI
|
||||||
EXTRACONFIG_arm = -e CONFIG_NAMESPACES
|
EXTRACONFIG_arm = -e CONFIG_NAMESPACES
|
||||||
EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES
|
EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES
|
||||||
EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD
|
EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD
|
||||||
|
@ -134,6 +138,7 @@ TEST =
|
||||||
# QEMU_ARCH: arch names used by qemu
|
# QEMU_ARCH: arch names used by qemu
|
||||||
QEMU_ARCH_i386 = i386
|
QEMU_ARCH_i386 = i386
|
||||||
QEMU_ARCH_x86_64 = x86_64
|
QEMU_ARCH_x86_64 = x86_64
|
||||||
|
QEMU_ARCH_x32 = x86_64
|
||||||
QEMU_ARCH_x86 = x86_64
|
QEMU_ARCH_x86 = x86_64
|
||||||
QEMU_ARCH_arm64 = aarch64
|
QEMU_ARCH_arm64 = aarch64
|
||||||
QEMU_ARCH_arm = arm
|
QEMU_ARCH_arm = arm
|
||||||
|
@ -174,6 +179,7 @@ endif
|
||||||
# QEMU_ARGS : some arch-specific args to pass to qemu
|
# QEMU_ARGS : some arch-specific args to pass to qemu
|
||||||
QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
QEMU_ARGS_x86_64 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
QEMU_ARGS_x86_64 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
|
QEMU_ARGS_x32 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
|
||||||
|
@ -210,6 +216,7 @@ Q=@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS_i386 = $(call cc-option,-m32)
|
CFLAGS_i386 = $(call cc-option,-m32)
|
||||||
|
CFLAGS_x32 = -mx32
|
||||||
CFLAGS_arm = -marm
|
CFLAGS_arm = -marm
|
||||||
CFLAGS_armthumb = -mthumb -march=armv6t2
|
CFLAGS_armthumb = -mthumb -march=armv6t2
|
||||||
CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
|
CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
|
||||||
|
@ -236,6 +243,11 @@ LDFLAGS :=
|
||||||
|
|
||||||
LIBGCC := -lgcc
|
LIBGCC := -lgcc
|
||||||
|
|
||||||
|
ifeq ($(ARCH),x86)
|
||||||
|
# Not needed on x86, probably not present for x32
|
||||||
|
LIBGCC :=
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(LLVM),)
|
ifneq ($(LLVM),)
|
||||||
# Not needed for clang
|
# Not needed for clang
|
||||||
LIBGCC :=
|
LIBGCC :=
|
||||||
|
|
|
@ -18,7 +18,7 @@ test_mode=system
|
||||||
werror=1
|
werror=1
|
||||||
llvm=
|
llvm=
|
||||||
all_archs=(
|
all_archs=(
|
||||||
i386 x86_64
|
i386 x86_64 x32
|
||||||
arm64 arm armthumb
|
arm64 arm armthumb
|
||||||
mips32le mips32be mipsn32le mipsn32be mips64le mips64be
|
mips32le mips32be mipsn32le mipsn32be mips64le mips64be
|
||||||
ppc ppc64 ppc64le
|
ppc ppc64 ppc64le
|
||||||
|
@ -115,6 +115,7 @@ crosstool_arch() {
|
||||||
mips*) echo mips;;
|
mips*) echo mips;;
|
||||||
s390*) echo s390;;
|
s390*) echo s390;;
|
||||||
sparc*) echo sparc64;;
|
sparc*) echo sparc64;;
|
||||||
|
x32*) echo x86_64;;
|
||||||
*) echo "$1";;
|
*) echo "$1";;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -192,6 +193,10 @@ test_arch() {
|
||||||
echo "Unsupported configuration"
|
echo "Unsupported configuration"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
if [ "$arch" = "x32" ] && [ "$test_mode" = "user" ]; then
|
||||||
|
echo "Unsupported configuration"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p "$build_dir"
|
mkdir -p "$build_dir"
|
||||||
swallow_output "${MAKE[@]}" defconfig
|
swallow_output "${MAKE[@]}" defconfig
|
||||||
|
|
Loading…
Add table
Reference in a new issue