* [PATCH v2 1/7] selftests/nolibc: allow use x86_64 toolchain for i386
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
@ 2023-08-11 20:28 ` Zhangjin Wu
2023-08-11 20:29 ` [PATCH v2 2/7] selftests/nolibc: allow use mips64 toolchain for mips Zhangjin Wu
` (6 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:28 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
This allows to share the same x86_64 toolchain for i386 architecture.
Pass '-m32' CFLAGS to tell x86_64 toolchains to generate i386 executable.
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 76c387a20811..98d0a619d49d 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -125,6 +125,7 @@ else
Q=@
endif
+CFLAGS_i386 = -m32
CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
CFLAGS_ppc64 = -m64 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
CFLAGS_ppc64le = -m64 -mlittle-endian -mno-vsx $(call cc-option,-mabi=elfv2)
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 2/7] selftests/nolibc: allow use mips64 toolchain for mips
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
2023-08-11 20:28 ` [PATCH v2 1/7] selftests/nolibc: allow use x86_64 toolchain for i386 Zhangjin Wu
@ 2023-08-11 20:29 ` Zhangjin Wu
2023-08-11 20:30 ` [PATCH v2 3/7] selftests/nolibc: libc-test: use HOSTCC instead of CC Zhangjin Wu
` (5 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:29 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
This allows to share the same mips64 toolchain for mips architecture.
Pass '-mabi=32' CFLAGS to tell mips64 toolchains to generate 32-bit mips
executable.
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 98d0a619d49d..d1012f006405 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -130,7 +130,7 @@ CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
CFLAGS_ppc64 = -m64 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
CFLAGS_ppc64le = -m64 -mlittle-endian -mno-vsx $(call cc-option,-mabi=elfv2)
CFLAGS_s390 = -m64
-CFLAGS_mips = -EL
+CFLAGS_mips = -mabi=32 -EL
CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all))
CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 -W -Wall -Wextra \
$(call cc-option,-fno-stack-protector) \
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 3/7] selftests/nolibc: libc-test: use HOSTCC instead of CC
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
2023-08-11 20:28 ` [PATCH v2 1/7] selftests/nolibc: allow use x86_64 toolchain for i386 Zhangjin Wu
2023-08-11 20:29 ` [PATCH v2 2/7] selftests/nolibc: allow use mips64 toolchain for mips Zhangjin Wu
@ 2023-08-11 20:30 ` Zhangjin Wu
2023-08-13 9:19 ` Willy Tarreau
2023-08-11 20:31 ` [PATCH v2 4/7] selftests/nolibc: allow customize CROSS_COMPILE by architecture Zhangjin Wu
` (4 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:30 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
libc-test is mainly added to compare the behavior of nolibc to the
system libc, it is meaningless and error-prone with cross compiling.
Let's use HOSTCC instead of CC to avoid wrongly use cross compiler when
CROSS_COMPILE is passed or customized.
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index d1012f006405..91ccfc27780f 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -191,7 +191,7 @@ nolibc-test: nolibc-test.c
endif
libc-test: nolibc-test.c
- $(QUIET_CC)$(CC) -o $@ $<
+ $(QUIET_CC)$(HOSTCC) -o $@ $<
# local libc-test
run-libc-test: libc-test
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 3/7] selftests/nolibc: libc-test: use HOSTCC instead of CC
2023-08-11 20:30 ` [PATCH v2 3/7] selftests/nolibc: libc-test: use HOSTCC instead of CC Zhangjin Wu
@ 2023-08-13 9:19 ` Willy Tarreau
0 siblings, 0 replies; 18+ messages in thread
From: Willy Tarreau @ 2023-08-13 9:19 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Sat, Aug 12, 2023 at 04:30:25AM +0800, Zhangjin Wu wrote:
> libc-test is mainly added to compare the behavior of nolibc to the
> system libc, it is meaningless and error-prone with cross compiling.
>
> Let's use HOSTCC instead of CC to avoid wrongly use cross compiler when
> CROSS_COMPILE is passed or customized.
Indeed. This one is actually a fix for this one, I'll pick it separately
as it's independent on this series:
85a0b029a1ce ("selftests/nolibc: add run-libc-test target")
Thanks,
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 4/7] selftests/nolibc: allow customize CROSS_COMPILE by architecture
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
` (2 preceding siblings ...)
2023-08-11 20:30 ` [PATCH v2 3/7] selftests/nolibc: libc-test: use HOSTCC instead of CC Zhangjin Wu
@ 2023-08-11 20:31 ` Zhangjin Wu
2023-08-11 20:32 ` [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures Zhangjin Wu
` (3 subsequent siblings)
7 siblings, 0 replies; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:31 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
Some cross compilers are not just prefixed with XARCH, customize them by
architecture may simplify the test a lot, especially, when iterate with
XARCH.
After customizing this for every architecture or its variant, the
minimal test argument will be architecture or variant itself, no
CROSS_COMPILE required to be passed.
If the prefix of installed cross compiler is not the same as the one
customized, we can also pass CROSS_COMPILE as before or even pass
CROSS_COMPILE_$(XARCH) and CC from command line.
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 91ccfc27780f..5aff60d31d72 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -1,6 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
# Makefile for nolibc tests
-include ../../../scripts/Makefile.include
# We need this for the "cc-option" macro.
include ../../../build/Build.include
@@ -55,6 +54,12 @@ IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi
IMAGE = $(IMAGE_$(XARCH))
IMAGE_NAME = $(notdir $(IMAGE))
+# CROSS_COMPILE: cross toolchain prefix by architecture
+CROSS_COMPILE ?= $(CROSS_COMPILE_$(XARCH))
+
+# Make CC is always prefixed with $(CROSS_COMPILE)
+include ../../../scripts/Makefile.include
+
# default kernel configurations that appear to be usable
DEFCONFIG_i386 = defconfig
DEFCONFIG_x86_64 = defconfig
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
` (3 preceding siblings ...)
2023-08-11 20:31 ` [PATCH v2 4/7] selftests/nolibc: allow customize CROSS_COMPILE by architecture Zhangjin Wu
@ 2023-08-11 20:32 ` Zhangjin Wu
2023-08-13 9:16 ` Willy Tarreau
2023-08-11 20:33 ` [PATCH v2 6/7] selftests/nolibc: import cc-cross-prefix macro Zhangjin Wu
` (2 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:32 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
This simplifies the 'make' commands for nolibc supported architectures,
only requires the XARCH option now.
As suggested by Willy, the small, newest and obtainable cross toolchains
from [1] are customized by default, users must download, decompress and
configure the bin/ path to the PATH environment variable manually.
If still want to use a cross toolchain from local software repositories,
we can also pass CROSS_COMPILE, CROSS_COMPILE_$(XARCH) or even CC from
command line.
After carefully install and configure $(CROSS_COMPILE_$(XARCH)),
qemu-system-$(XARCH) and qemu-$(XARCH), it is able to run tests for the
architectures or their variants like this:
$ ARCHS="i386 x86_64 arm64 arm mips ppc ppc64 ppc64le riscv s390 loongarch"
$ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make run-user XARCH=$arch | grep status; done
$ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make defconfig run XARCH=$arch | grep status; done
[1]: https://mirrors.edge.kernel.org/pub/tools/crosstool/
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 5aff60d31d72..9a787fdf9842 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -55,6 +55,27 @@ IMAGE = $(IMAGE_$(XARCH))
IMAGE_NAME = $(notdir $(IMAGE))
# CROSS_COMPILE: cross toolchain prefix by architecture
+#
+# Notes,
+# - The small, newest and obtainable cross toolchains from [1] are recommended,
+# Please download, decompress and add the bin/ path to 'PATH' env variable
+# - To use another cross compiler, pass 'CROSS_COMPLE', 'CROSS_COMPILE_$(XARCH)'
+# by variant or even 'CC' from command line
+#
+# [1]: https://mirrors.edge.kernel.org/pub/tools/crosstool/
+
+CROSS_COMPILE_i386 ?= x86_64-linux-
+CROSS_COMPILE_x86_64 ?= x86_64-linux-
+CROSS_COMPILE_x86 ?= x86_64-linux-
+CROSS_COMPILE_arm64 ?= aarch64-linux-
+CROSS_COMPILE_arm ?= arm-linux-gnueabi-
+CROSS_COMPILE_mips ?= mips64-linux-
+CROSS_COMPILE_ppc ?= powerpc64-linux-
+CROSS_COMPILE_ppc64 ?= powerpc64-linux-
+CROSS_COMPILE_ppc64le ?= powerpc64-linux-
+CROSS_COMPILE_riscv ?= riscv64-linux-
+CROSS_COMPILE_s390 ?= s390-linux-
+CROSS_COMPILE_loongarch ?= loongarch64-linux-
CROSS_COMPILE ?= $(CROSS_COMPILE_$(XARCH))
# Make CC is always prefixed with $(CROSS_COMPILE)
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures
2023-08-11 20:32 ` [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures Zhangjin Wu
@ 2023-08-13 9:16 ` Willy Tarreau
2023-08-13 10:18 ` Zhangjin Wu
0 siblings, 1 reply; 18+ messages in thread
From: Willy Tarreau @ 2023-08-13 9:16 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Sat, Aug 12, 2023 at 04:32:41AM +0800, Zhangjin Wu wrote:
> +CROSS_COMPILE_i386 ?= x86_64-linux-
> +CROSS_COMPILE_x86_64 ?= x86_64-linux-
> +CROSS_COMPILE_x86 ?= x86_64-linux-
> +CROSS_COMPILE_arm64 ?= aarch64-linux-
> +CROSS_COMPILE_arm ?= arm-linux-gnueabi-
> +CROSS_COMPILE_mips ?= mips64-linux-
Given that we don't support mips64, I'd suggest to ust mips-linux-
instead here for now. That doesn't seem right to ask users to
download a toolchain for a different architecture than the one
supported just because we can adapt to it.
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures
2023-08-13 9:16 ` Willy Tarreau
@ 2023-08-13 10:18 ` Zhangjin Wu
2023-08-14 7:16 ` Willy Tarreau
0 siblings, 1 reply; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-13 10:18 UTC (permalink / raw)
To: w; +Cc: falcon, linux-kernel, linux-kselftest, tanyuan, thomas
> On Sat, Aug 12, 2023 at 04:32:41AM +0800, Zhangjin Wu wrote:
> > +CROSS_COMPILE_i386 ?= x86_64-linux-
> > +CROSS_COMPILE_x86_64 ?= x86_64-linux-
> > +CROSS_COMPILE_x86 ?= x86_64-linux-
> > +CROSS_COMPILE_arm64 ?= aarch64-linux-
> > +CROSS_COMPILE_arm ?= arm-linux-gnueabi-
> > +CROSS_COMPILE_mips ?= mips64-linux-
>
> Given that we don't support mips64, I'd suggest to ust mips-linux-
> instead here for now. That doesn't seem right to ask users to
> download a toolchain for a different architecture than the one
> supported just because we can adapt to it.
>
Agree very much, and the one below from patch 7/7 [1]:
+CROSS_COMPILE_arm64 ?= aarch64-linux- aarch64-linux-gnu-
+CROSS_COMPILE_arm ?= arm-linux-gnueabi- arm-none-eabi-
+CROSS_COMPILE_mips ?= mips64-linux- mips64el-linux-gnuabi64-
It should be:
+CROSS_COMPILE_mips ?= mips-linux- mips-linux-gnu-gcc
And if necessary, the mips64-linux- line in the commit message of [1] should be
corrected too.
Thanks very much!
Best regards,
Zhangjin
[1]: https://lore.kernel.org/lkml/b06de47989e3138de3d178da0d705ad6560924ec.1691783604.git.falcon@tinylab.org/
> Willy
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures
2023-08-13 10:18 ` Zhangjin Wu
@ 2023-08-14 7:16 ` Willy Tarreau
0 siblings, 0 replies; 18+ messages in thread
From: Willy Tarreau @ 2023-08-14 7:16 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Sun, Aug 13, 2023 at 06:18:05PM +0800, Zhangjin Wu wrote:
> > Given that we don't support mips64, I'd suggest to ust mips-linux-
> > instead here for now. That doesn't seem right to ask users to
> > download a toolchain for a different architecture than the one
> > supported just because we can adapt to it.
> >
>
> Agree very much, and the one below from patch 7/7 [1]:
>
> +CROSS_COMPILE_arm64 ?= aarch64-linux- aarch64-linux-gnu-
> +CROSS_COMPILE_arm ?= arm-linux-gnueabi- arm-none-eabi-
> +CROSS_COMPILE_mips ?= mips64-linux- mips64el-linux-gnuabi64-
>
> It should be:
>
> +CROSS_COMPILE_mips ?= mips-linux- mips-linux-gnu-gcc
>
> And if necessary, the mips64-linux- line in the commit message of [1] should be
> corrected too.
I just did that (and fixed mips-linux-gnu- instead of mips-linux-gnu-gcc
above).
Thanks,
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 6/7] selftests/nolibc: import cc-cross-prefix macro
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
` (4 preceding siblings ...)
2023-08-11 20:32 ` [PATCH v2 5/7] selftests/nolibc: customize CROSS_COMPILE for all architectures Zhangjin Wu
@ 2023-08-11 20:33 ` Zhangjin Wu
2023-08-11 20:34 ` [PATCH v2 7/7] selftests/nolibc: allow use cross toolchains from software repository Zhangjin Wu
2023-08-13 9:37 ` [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Willy Tarreau
7 siblings, 0 replies; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:33 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
cc-cross-prefix is required to return first <prefix> where a <prefix>gcc
is found in PATH, this allows to customize more than one cross compiler.
Since scripts/Makefile.compiler provides cc-option too, let's use it
instead of tools/build/Build.include.
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 9a787fdf9842..7687988c780b 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
# Makefile for nolibc tests
-# We need this for the "cc-option" macro.
-include ../../../build/Build.include
+# We need this for the "cc-option" and "cc-cross-prefix" macros.
+include ../../../../scripts/Makefile.compiler
# we're in ".../tools/testing/selftests/nolibc"
ifeq ($(srctree),)
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 7/7] selftests/nolibc: allow use cross toolchains from software repository
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
` (5 preceding siblings ...)
2023-08-11 20:33 ` [PATCH v2 6/7] selftests/nolibc: import cc-cross-prefix macro Zhangjin Wu
@ 2023-08-11 20:34 ` Zhangjin Wu
2023-08-13 9:37 ` [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Willy Tarreau
7 siblings, 0 replies; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-11 20:34 UTC (permalink / raw)
To: falcon, w; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
This allows users to install and use cross toolchains from local
software repositories.
The prefixes of local cross toolchains are appended to the
CROSS_COMPILE_$(XARCH) list, cc-cross-prefix is called to search this
list and return the first <prefix> where a <prefix>gcc is found in PATH.
Since different distributions have different prefixes, here only adds
the frequently used ones.
To use more prefixes not listed in Makefile, please put the lines as
following in your script and load it with a 'source' command:
export CROSS_COMPILE_i386="x86_64-linux-"
export CROSS_COMPILE_x86_64="x86_64-linux-"
export CROSS_COMPILE_x86="x86_64-linux-"
export CROSS_COMPILE_arm64="aarch64-linux-"
export CROSS_COMPILE_arm="arm-linux-gnueabi-"
export CROSS_COMPILE_mips="mips64-linux-"
export CROSS_COMPILE_ppc="powerpc64-linux-"
export CROSS_COMPILE_ppc64="powerpc64-linux-"
export CROSS_COMPILE_ppc64le="powerpc64-linux-"
export CROSS_COMPILE_riscv="riscv64-linux-"
export CROSS_COMPILE_s390="s390-linux-"
export CROSS_COMPILE_loongarch="loongarch64-linux-"
Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
---
tools/testing/selftests/nolibc/Makefile | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 7687988c780b..ef2507f12e24 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -59,24 +59,25 @@ IMAGE_NAME = $(notdir $(IMAGE))
# Notes,
# - The small, newest and obtainable cross toolchains from [1] are recommended,
# Please download, decompress and add the bin/ path to 'PATH' env variable
+# - The frequently used prefixes are added for local cross toolchains
# - To use another cross compiler, pass 'CROSS_COMPLE', 'CROSS_COMPILE_$(XARCH)'
# by variant or even 'CC' from command line
#
# [1]: https://mirrors.edge.kernel.org/pub/tools/crosstool/
-CROSS_COMPILE_i386 ?= x86_64-linux-
-CROSS_COMPILE_x86_64 ?= x86_64-linux-
-CROSS_COMPILE_x86 ?= x86_64-linux-
-CROSS_COMPILE_arm64 ?= aarch64-linux-
-CROSS_COMPILE_arm ?= arm-linux-gnueabi-
-CROSS_COMPILE_mips ?= mips64-linux-
-CROSS_COMPILE_ppc ?= powerpc64-linux-
-CROSS_COMPILE_ppc64 ?= powerpc64-linux-
-CROSS_COMPILE_ppc64le ?= powerpc64-linux-
-CROSS_COMPILE_riscv ?= riscv64-linux-
-CROSS_COMPILE_s390 ?= s390-linux-
+CROSS_COMPILE_i386 ?= x86_64-linux- x86_64-linux-gnu-
+CROSS_COMPILE_x86_64 ?= x86_64-linux- x86_64-linux-gnu-
+CROSS_COMPILE_x86 ?= x86_64-linux- x86_64-linux-gnu-
+CROSS_COMPILE_arm64 ?= aarch64-linux- aarch64-linux-gnu-
+CROSS_COMPILE_arm ?= arm-linux-gnueabi- arm-none-eabi-
+CROSS_COMPILE_mips ?= mips64-linux- mips64el-linux-gnuabi64-
+CROSS_COMPILE_ppc ?= powerpc64-linux- powerpc-linux-gnu-
+CROSS_COMPILE_ppc64 ?= powerpc64-linux- powerpc64le-linux-gnu-
+CROSS_COMPILE_ppc64le ?= powerpc64-linux- powerpc64le-linux-gnu-
+CROSS_COMPILE_riscv ?= riscv64-linux- riscv64-linux-gnu-
+CROSS_COMPILE_s390 ?= s390-linux- s390x-linux-gnu-
CROSS_COMPILE_loongarch ?= loongarch64-linux-
-CROSS_COMPILE ?= $(CROSS_COMPILE_$(XARCH))
+CROSS_COMPILE ?= $(call cc-cross-prefix,$(CROSS_COMPILE_$(XARCH)))
# Make CC is always prefixed with $(CROSS_COMPILE)
include ../../../scripts/Makefile.include
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-11 20:27 [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Zhangjin Wu
` (6 preceding siblings ...)
2023-08-11 20:34 ` [PATCH v2 7/7] selftests/nolibc: allow use cross toolchains from software repository Zhangjin Wu
@ 2023-08-13 9:37 ` Willy Tarreau
2023-08-13 10:05 ` Zhangjin Wu
7 siblings, 1 reply; 18+ messages in thread
From: Willy Tarreau @ 2023-08-13 9:37 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
Hi Zhangjin,
On Sat, Aug 12, 2023 at 04:27:01AM +0800, Zhangjin Wu wrote:
> Hi, Willy
>
> Here is v2 of the customized CROSS_COMPILE support, this helps a lot
> during the testing of the other cross-arch nolibc changes:
>
> $ ARCHS="i386 x86_64 arm64 arm mips ppc ppc64 ppc64le riscv s390"
> $ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make run-user XARCH=$arch | grep status; done
>
> Based on your suggestion, we did this changes:
>
> - The qemu notes patch [1] is removed, welcome your doc file ;-)
> - Arnd's crosstools are customized by default
> - Import cc-cross-prefix to support local cross toolchains too
> - Use mips64 toolchains for mips like x86_64 toolchains for i386, allow
> download less toolchains
> - Use HOSTCC for libc-test compiling
(...)
I think it's basically OK (just this mips64 thing). I've picked patch 3
already since it's a fix. Once we agree on what to do there, I can queue
it if that helps (I can modify mips64- to mips- in the patch if that's
OK for you, no need to resend for this, just let me know).
I think that later I'll further extend XARCH with new variants to
support ARMv5 and Thumb2, because we have different code for this
and I continue to manually change the CFLAGS to test both.
Thanks,
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-13 9:37 ` [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures Willy Tarreau
@ 2023-08-13 10:05 ` Zhangjin Wu
2023-08-14 7:18 ` Willy Tarreau
0 siblings, 1 reply; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-13 10:05 UTC (permalink / raw)
To: w; +Cc: falcon, linux-kernel, linux-kselftest, tanyuan, thomas
Hi, Willy
> Hi Zhangjin,
>
> On Sat, Aug 12, 2023 at 04:27:01AM +0800, Zhangjin Wu wrote:
> > Hi, Willy
> >
> > Here is v2 of the customized CROSS_COMPILE support, this helps a lot
> > during the testing of the other cross-arch nolibc changes:
> >
> > $ ARCHS="i386 x86_64 arm64 arm mips ppc ppc64 ppc64le riscv s390"
> > $ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make run-user XARCH=$arch | grep status; done
> >
> > Based on your suggestion, we did this changes:
> >
> > - The qemu notes patch [1] is removed, welcome your doc file ;-)
> > - Arnd's crosstools are customized by default
> > - Import cc-cross-prefix to support local cross toolchains too
> > - Use mips64 toolchains for mips like x86_64 toolchains for i386, allow
> > download less toolchains
> > - Use HOSTCC for libc-test compiling
> (...)
>
> I think it's basically OK (just this mips64 thing). I've picked patch 3
> already since it's a fix. Once we agree on what to do there, I can queue
> it if that helps (I can modify mips64- to mips- in the patch if that's
> OK for you, no need to resend for this, just let me know).
>
It is ok for me, thanks ;-)
I thought somebody may add mips64 support soon, but we do only have mips
currently, it is fair to not use mips64 toolchain.
> I think that later I'll further extend XARCH with new variants to
> support ARMv5 and Thumb2, because we have different code for this
> and I continue to manually change the CFLAGS to test both.
>
Ok, what about further add x86_64 as the default variant for x86 (like ppc for
powerpc)? and then it is able to only resereve the variables for x86_64. I have
prepared a patch for this goal in our new tinyconfig patchset, it will further
avoid adding the same nolibc-test-x86.config and nolibc-test-x86_64.config.
Best regards,
Zhangjin
> Thanks,
> Willy
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-13 10:05 ` Zhangjin Wu
@ 2023-08-14 7:18 ` Willy Tarreau
2023-08-14 7:38 ` Zhangjin Wu
0 siblings, 1 reply; 18+ messages in thread
From: Willy Tarreau @ 2023-08-14 7:18 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Sun, Aug 13, 2023 at 06:05:03PM +0800, Zhangjin Wu wrote:
> > I think that later I'll further extend XARCH with new variants to
> > support ARMv5 and Thumb2, because we have different code for this
> > and I continue to manually change the CFLAGS to test both.
> >
>
> Ok, what about further add x86_64 as the default variant for x86 (like ppc for
> powerpc)? and then it is able to only resereve the variables for x86_64. I have
> prepared a patch for this goal in our new tinyconfig patchset, it will further
> avoid adding the same nolibc-test-x86.config and nolibc-test-x86_64.config.
I'm confused, x86 already defaults to x86_64, it's just that it depends
on the .config itself to figure whether to produce a 32- or 64-bit kernel.
But for example it starts qemu in 64-bit mode. Am I missing anything ?
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-14 7:18 ` Willy Tarreau
@ 2023-08-14 7:38 ` Zhangjin Wu
2023-08-14 8:25 ` Willy Tarreau
0 siblings, 1 reply; 18+ messages in thread
From: Zhangjin Wu @ 2023-08-14 7:38 UTC (permalink / raw)
To: w; +Cc: falcon, linux-kernel, linux-kselftest, tanyuan, thomas
> On Sun, Aug 13, 2023 at 06:05:03PM +0800, Zhangjin Wu wrote:
> > > I think that later I'll further extend XARCH with new variants to
> > > support ARMv5 and Thumb2, because we have different code for this
> > > and I continue to manually change the CFLAGS to test both.
> > >
> >
> > Ok, what about further add x86_64 as the default variant for x86 (like ppc for
> > powerpc)? and then it is able to only resereve the variables for x86_64. I have
> > prepared a patch for this goal in our new tinyconfig patchset, it will further
> > avoid adding the same nolibc-test-x86.config and nolibc-test-x86_64.config.
>
> I'm confused, x86 already defaults to x86_64, it's just that it depends
> on the .config itself to figure whether to produce a 32- or 64-bit kernel.
> But for example it starts qemu in 64-bit mode. Am I missing anything ?
>
In kernel side, it is, but in our nolibc-test, we have added a copy of x86_64
for x86:
$ grep -E "_x86" tools/testing/selftests/nolibc/Makefile
IMAGE_x86_64 = arch/x86/boot/bzImage
IMAGE_x86 = arch/x86/boot/bzImage
CROSS_COMPILE_x86_64 ?= x86_64-linux- x86_64-linux-gnu-
CROSS_COMPILE_x86 ?= x86_64-linux- x86_64-linux-gnu-
DEFCONFIG_x86_64 = defconfig
DEFCONFIG_x86 = defconfig
QEMU_ARCH_x86_64 = x86_64
QEMU_ARCH_x86 = x86_64
QEMU_ARGS_x86_64 = -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=%)"
With 'XARCH', the "_x86" copy of them can be simply replaced with such a line:
# configure default variants for target kernel supported architectures
XARCH_powerpc = ppc
+XARCH_x86 = x86_64
XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
And therefore, the future nolibc-test-x86_64.config is also enough for x86.
But I have seen the 'x86' exception in tools/include/nolibc/Makefile, just a
confirm on if this replacement is ok.
BR,
Zhangjin
> Willy
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-14 7:38 ` Zhangjin Wu
@ 2023-08-14 8:25 ` Willy Tarreau
2023-08-14 8:25 ` Willy Tarreau
0 siblings, 1 reply; 18+ messages in thread
From: Willy Tarreau @ 2023-08-14 8:25 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Mon, Aug 14, 2023 at 03:38:54PM +0800, Zhangjin Wu wrote:
> > On Sun, Aug 13, 2023 at 06:05:03PM +0800, Zhangjin Wu wrote:
> > > > I think that later I'll further extend XARCH with new variants to
> > > > support ARMv5 and Thumb2, because we have different code for this
> > > > and I continue to manually change the CFLAGS to test both.
> > > >
> > >
> > > Ok, what about further add x86_64 as the default variant for x86 (like ppc for
> > > powerpc)? and then it is able to only resereve the variables for x86_64. I have
> > > prepared a patch for this goal in our new tinyconfig patchset, it will further
> > > avoid adding the same nolibc-test-x86.config and nolibc-test-x86_64.config.
> >
> > I'm confused, x86 already defaults to x86_64, it's just that it depends
> > on the .config itself to figure whether to produce a 32- or 64-bit kernel.
> > But for example it starts qemu in 64-bit mode. Am I missing anything ?
> >
>
> In kernel side, it is, but in our nolibc-test, we have added a copy of x86_64
> for x86:
>
> $ grep -E "_x86" tools/testing/selftests/nolibc/Makefile
> IMAGE_x86_64 = arch/x86/boot/bzImage
> IMAGE_x86 = arch/x86/boot/bzImage
> CROSS_COMPILE_x86_64 ?= x86_64-linux- x86_64-linux-gnu-
> CROSS_COMPILE_x86 ?= x86_64-linux- x86_64-linux-gnu-
> DEFCONFIG_x86_64 = defconfig
> DEFCONFIG_x86 = defconfig
> QEMU_ARCH_x86_64 = x86_64
> QEMU_ARCH_x86 = x86_64
> QEMU_ARGS_x86_64 = -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=%)"
>
> With 'XARCH', the "_x86" copy of them can be simply replaced with such a line:
>
> # configure default variants for target kernel supported architectures
> XARCH_powerpc = ppc
> +XARCH_x86 = x86_64
> XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
>
> And therefore, the future nolibc-test-x86_64.config is also enough for x86.
>
> But I have seen the 'x86' exception in tools/include/nolibc/Makefile, just a
> confirm on if this replacement is ok.
Ah I thought you meant the opposite, i.e. that ppc did map to powerpc
that I was not seeing anywhere else. Yes we can probably do that and
remove the x86-specific lines later.
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 0/7] selftests/nolibc: customize CROSS_COMPILE for all supported architectures
2023-08-14 8:25 ` Willy Tarreau
@ 2023-08-14 8:25 ` Willy Tarreau
0 siblings, 0 replies; 18+ messages in thread
From: Willy Tarreau @ 2023-08-14 8:25 UTC (permalink / raw)
To: Zhangjin Wu; +Cc: linux-kernel, linux-kselftest, tanyuan, thomas
On Mon, Aug 14, 2023 at 10:25:00AM +0200, Willy Tarreau wrote:
> On Mon, Aug 14, 2023 at 03:38:54PM +0800, Zhangjin Wu wrote:
> > > On Sun, Aug 13, 2023 at 06:05:03PM +0800, Zhangjin Wu wrote:
> > > > > I think that later I'll further extend XARCH with new variants to
> > > > > support ARMv5 and Thumb2, because we have different code for this
> > > > > and I continue to manually change the CFLAGS to test both.
> > > > >
> > > >
> > > > Ok, what about further add x86_64 as the default variant for x86 (like ppc for
> > > > powerpc)? and then it is able to only resereve the variables for x86_64. I have
> > > > prepared a patch for this goal in our new tinyconfig patchset, it will further
> > > > avoid adding the same nolibc-test-x86.config and nolibc-test-x86_64.config.
> > >
> > > I'm confused, x86 already defaults to x86_64, it's just that it depends
> > > on the .config itself to figure whether to produce a 32- or 64-bit kernel.
> > > But for example it starts qemu in 64-bit mode. Am I missing anything ?
> > >
> >
> > In kernel side, it is, but in our nolibc-test, we have added a copy of x86_64
> > for x86:
> >
> > $ grep -E "_x86" tools/testing/selftests/nolibc/Makefile
> > IMAGE_x86_64 = arch/x86/boot/bzImage
> > IMAGE_x86 = arch/x86/boot/bzImage
> > CROSS_COMPILE_x86_64 ?= x86_64-linux- x86_64-linux-gnu-
> > CROSS_COMPILE_x86 ?= x86_64-linux- x86_64-linux-gnu-
> > DEFCONFIG_x86_64 = defconfig
> > DEFCONFIG_x86 = defconfig
> > QEMU_ARCH_x86_64 = x86_64
> > QEMU_ARCH_x86 = x86_64
> > QEMU_ARGS_x86_64 = -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=%)"
> >
> > With 'XARCH', the "_x86" copy of them can be simply replaced with such a line:
> >
> > # configure default variants for target kernel supported architectures
> > XARCH_powerpc = ppc
> > +XARCH_x86 = x86_64
> > XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
> >
> > And therefore, the future nolibc-test-x86_64.config is also enough for x86.
> >
> > But I have seen the 'x86' exception in tools/include/nolibc/Makefile, just a
> > confirm on if this replacement is ok.
>
> Ah I thought you meant the opposite, i.e. that ppc did map to powerpc
> that I was not seeing anywhere else. Yes we can probably do that and
> remove the x86-specific lines later.
by "later" I mean "further" in the file.
Willy
^ permalink raw reply [flat|nested] 18+ messages in thread