[PATCH] tools/nolibc: always use 64-bit mode for s390 header checks

Thomas Weißschuh posted 1 patch 2 weeks, 1 day ago
tools/include/nolibc/Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH] tools/nolibc: always use 64-bit mode for s390 header checks
Posted by Thomas Weißschuh 2 weeks, 1 day ago
32-bit s390 support was recently removed from nolibc.
If the compiler defaults to 32-bit during the header checks, they fail.

Make sure to always use 64-bit mode for s390 heafer checks.

Fixes: 169ebcbb9082 ("tools: Remove s390 compat support")
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/include/nolibc/Makefile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile
index 143c2d2c2ba6..ecc660a2433c 100644
--- a/tools/include/nolibc/Makefile
+++ b/tools/include/nolibc/Makefile
@@ -107,9 +107,12 @@ headers_standalone: headers
 	$(Q)$(MAKE) -C $(srctree) headers
 	$(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)sysroot
 
+CFLAGS_s390 := -m64
+CFLAGS := $(CFLAGS_$(ARCH))
+
 headers_check: headers_standalone
 	$(Q)for header in $(filter-out crt.h std.h,$(all_files)); do \
-		$(CC) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
+		$(CC) $(CFLAGS) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
 			-I$(or $(objtree),$(srctree))/usr/include -include $$header -include $$header || exit 1; \
 	done
 

---
base-commit: 4edd0eacb71563ec46338bbd59d45213ed5257a7
change-id: 20251203-nolibc-headers-check-s390-0afd32ab4209

Best regards,
-- 
Thomas Weißschuh <linux@weissschuh.net>

Re: [PATCH] tools/nolibc: always use 64-bit mode for s390 header checks
Posted by Willy Tarreau 2 weeks, 1 day ago
Hi Thomas,

On Wed, Dec 03, 2025 at 08:08:00PM +0100, Thomas Weißschuh wrote:
> 32-bit s390 support was recently removed from nolibc.
> If the compiler defaults to 32-bit during the header checks, they fail.
> 
> Make sure to always use 64-bit mode for s390 heafer checks.
> 
> Fixes: 169ebcbb9082 ("tools: Remove s390 compat support")
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
>  tools/include/nolibc/Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile
> index 143c2d2c2ba6..ecc660a2433c 100644
> --- a/tools/include/nolibc/Makefile
> +++ b/tools/include/nolibc/Makefile
> @@ -107,9 +107,12 @@ headers_standalone: headers
>  	$(Q)$(MAKE) -C $(srctree) headers
>  	$(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)sysroot
>  
> +CFLAGS_s390 := -m64
> +CFLAGS := $(CFLAGS_$(ARCH))
> +
>  headers_check: headers_standalone
>  	$(Q)for header in $(filter-out crt.h std.h,$(all_files)); do \
> -		$(CC) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
> +		$(CC) $(CFLAGS) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
>  			-I$(or $(objtree),$(srctree))/usr/include -include $$header -include $$header || exit 1; \
>  	done
>  

Interesrting, it reminded me something, I was sure that we had been
forcing that one earlier for the case of compilers defaulting to 32-bits,
but maybe that was a side effect of us forcing it on other archs. Ah I've
found it now it's the commit that introduced s390 support in fact that
Brought -m64 from the start, and it was for the test suite:

  0043e6f21dbe ("selftests/nolibc: add s390 support")

In any case I'm now seeing that Heiko confirmed it as well, so FWIW:

Acked-by: Willy Tarreau <w@1wt.eu>

Thanks,
Willy
Re: [PATCH] tools/nolibc: always use 64-bit mode for s390 header checks
Posted by Heiko Carstens 2 weeks, 1 day ago
On Wed, Dec 03, 2025 at 08:08:00PM +0100, Thomas Weißschuh wrote:
> 32-bit s390 support was recently removed from nolibc.
> If the compiler defaults to 32-bit during the header checks, they fail.
> 
> Make sure to always use 64-bit mode for s390 heafer checks.
> 
> Fixes: 169ebcbb9082 ("tools: Remove s390 compat support")
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
>  tools/include/nolibc/Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile
> index 143c2d2c2ba6..ecc660a2433c 100644
> --- a/tools/include/nolibc/Makefile
> +++ b/tools/include/nolibc/Makefile
> @@ -107,9 +107,12 @@ headers_standalone: headers
>  	$(Q)$(MAKE) -C $(srctree) headers
>  	$(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)sysroot
>  
> +CFLAGS_s390 := -m64
> +CFLAGS := $(CFLAGS_$(ARCH))
> +
>  headers_check: headers_standalone
>  	$(Q)for header in $(filter-out crt.h std.h,$(all_files)); do \
> -		$(CC) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
> +		$(CC) $(CFLAGS) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /dev/null \
>  			-I$(or $(objtree),$(srctree))/usr/include -include $$header -include $$header || exit 1; \
>  	done

I wasn't even aware that anybody would build a compiler which defaults
to 32 bit, until Arnd pointed this out. Anyway:

Acked-by: Heiko Carstens <hca@linux.ibm.com>