From nobody Mon Feb 9 05:37:17 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC7932701B2; Thu, 24 Apr 2025 11:48:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495299; cv=none; b=cPOOeAGB0+DthJj41Z6WUnyTw1ljWhFSsMlTZnxoA1F8cK3lVDcgMmCM+euFeGGdFq+sb4Kj+C+TDCAiABUSzpSLi3Qr8tKvUC1HV7UHuoPqwEp7fvd3Oeg0avJ/j7ZuHi4UiCQ9ZH04Hlw/DXbkq5O6e8XVWShbWdvQ0aY4hzI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495299; c=relaxed/simple; bh=kSorqPSavc4iZtIeCw0TRCKBKtK4V92gpzBqgR+dE4s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dq6XWxgGK8tS20iJN92GV2VQUDpiaolCa5mbP3FGZg9IjYzvLNuJgdwCg4WP7XIJH63UV2NI16qmjyXxyAqqTOHV7l4jvy2HMTN7WQupnA9oYHXknUoLdnupsFFhnXa80WXhupDGt6Vlv4wAUMv3cakIlItjfmy7a3Z+K7IL4So= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=HJt2WH76; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=ycWBSJAV; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="HJt2WH76"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="ycWBSJAV" From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1745495295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BRZV+0kC9YmkssdcQ3Hgc6CUeu9WsfgqL8ZT0sTbROc=; b=HJt2WH76P+zqN7V3n39G8vjo3AERBPBmyHThgeczjp0K42vk85ReMJn3PLnnbXl8HQLr7Y 1x4lxqk5/8mYoEcUTBsAkBbC7lVpUYe1WIg1xLAmVAjE43lgz43bsqwDjaLP3Ovf1QphfD wrT7DGoh1YoCDZ6GScFyVf7+h5QxZ39Bf1o9aEy5JyKVf6mmKboBQ1BL5L6TMahg30ZVYu aylNy1wStAiGgxVubzNrhFKhO1/bUEiaJfFwaXdLfbLApUIpHfEwPfhyyykqA7f52nURm2 ZUgNFjf2LYez3mXXHufFJJuP1/zTBW/35uG5RoszjrZM5SCk40dDYuSNrJteeA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1745495295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BRZV+0kC9YmkssdcQ3Hgc6CUeu9WsfgqL8ZT0sTbROc=; b=ycWBSJAV0E6dcf5k09hRRKlpmOoAEKVDfFRleGhLCI/XcOukzLAs40w7RJyvhcMHMKwHXA ec/912u7kgqvBVDA== Date: Thu, 24 Apr 2025 13:48:11 +0200 Subject: [PATCH 1/3] tools/nolibc: add target to check header usability Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-nolibc-header-check-v1-1-011576b6ed6f@linutronix.de> References: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> In-Reply-To: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> To: Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Developer-Signature: v=1; a=ed25519-sha256; t=1745495292; l=1315; i=thomas.weissschuh@linutronix.de; s=20240209; h=from:subject:message-id; bh=kSorqPSavc4iZtIeCw0TRCKBKtK4V92gpzBqgR+dE4s=; b=N0LLRDm35OqAxMjzv/9cpPBi2FPmFCj8+xRldAYmixxio+Hj5n8Vq5f7+EoWY/7nPscdppYSb IfVNbw0SwnGAqy33qS8LrWoTT0ii3BdEoJzScb1lneiyjQv7PIApmyp X-Developer-Key: i=thomas.weissschuh@linutronix.de; a=ed25519; pk=pfvxvpFUDJV2h2nY0FidLUml22uGLSjByFbM6aqQQws= Each nolibc header should be valid for inclusion irrespective of any special ordering requirements. Add a new make target, based on the old kbuild "make header_check" target to validate this requirement. For now the check fails, but the following commits will fix the issues. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile index e05862cd08051685112f067d6eb45716613dd43c..41ef18872a7e9435a5efec9c0b3= 2b9e29fcd4ce8 100644 --- a/tools/include/nolibc/Makefile +++ b/tools/include/nolibc/Makefile @@ -101,5 +101,14 @@ headers_standalone: headers $(Q)$(MAKE) -C $(srctree) headers $(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=3D$(OUTPUT)sys= root =20 +# GCC uses "s390", clang "systemz" +CLANG_CROSS_FLAGS :=3D $(subst --target=3Ds390-linux,--target=3Dsystemz-li= nux,$(CLANG_CROSS_FLAGS)) + +headers_check: headers_standalone + for header in $(all_files); do \ + $(CC) $(CLANG_CROSS_FLAGS) -Wall -Werror -nostdinc -fsyntax-only -x c /d= ev/null \ + -I$(OUTPUT)sysroot/include -include $$header -include $$header; \ + done + clean: $(call QUIET_CLEAN, nolibc) rm -rf "$(OUTPUT)sysroot" --=20 2.49.0 From nobody Mon Feb 9 05:37:17 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C291C21FF5A; Thu, 24 Apr 2025 11:48:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495300; cv=none; b=NY0EsGCntMg0OUuU4k5OtGx8cDO1XBd9lhggY+LbEuQmihtYJNR3kVcqCittkbz/zmtOP7nbpJpo3xhY/yEfn76avX1Y91Ez1yQ+4PNWlqKFXbuPzNxu9+9WHxsFaBNgS3DlFlOGg23CddGpeeHaRqzvUjwnfaqlxltBYF/RaY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495300; c=relaxed/simple; bh=VoE6OmAwofxkHiKLz+nGUa+9WokQvVG4ZP7QwcR4GxM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BzPw98HHWnSiKuYmmwXZZceXJWJHg9FVgihO8Q0+LppO57/qi4Hn+ikp1SS88rbK+wmOdrOPIEQDwcl3cSxoD1tdY7mpoOVcOQc5lvUVKzI01y17FyIIAlr5rA3YZZ2h0EXpngJIwGU69h34RMytNFWc0GNptPLTCowkvht37aQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=c0DNCiLG; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=kbl3b5bH; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="c0DNCiLG"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="kbl3b5bH" From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1745495296; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Yn58Vv/VpIlhtWOr6OS0BMTd6rBqTRqVk+MHr1fF1HY=; b=c0DNCiLG2Edrc2Fd2+1g87S/vznCz1Op/gVrqwz9VWUJAPgHTMbnXApGR1wjOmgQctrEb2 +Sv0IWpDc0mT0kVybtsdXQ+4GiNiY3W4r52HEuIB5omvJsitCuynEpipHlqtvtg8yh8joT FqJBgT9tG9F/L+qrsEL0vwN+FfmXhMtpgSMnY/DP2Yc9sDSLTBCnI6GYxZse0J5d53HCNG ZPGeaBvVnMOkrcH09pF3bAuw8mxy+umszAiQgHIhUR5pEOlLSeiuWQSjqWCnTgz+YII0sI fi6xLMmt70kV5s21dkdlmMnzoPUWBEEAPlwirqsEipRE3L3v393N2CHgNn0U0Q== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1745495296; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Yn58Vv/VpIlhtWOr6OS0BMTd6rBqTRqVk+MHr1fF1HY=; b=kbl3b5bHky0ZpyGsYz5KrXBgwUuF/EGzlXC9+NDxfcwPuKU1qCI3pUyOguyeumjgNw4Jl0 AItN/uYw0jUnpZAA== Date: Thu, 24 Apr 2025 13:48:12 +0200 Subject: [PATCH 2/3] tools/nolibc: include nolibc.h early from all header files Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-nolibc-header-check-v1-2-011576b6ed6f@linutronix.de> References: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> In-Reply-To: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> To: Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Developer-Signature: v=1; a=ed25519-sha256; t=1745495292; l=15357; i=thomas.weissschuh@linutronix.de; s=20240209; h=from:subject:message-id; bh=VoE6OmAwofxkHiKLz+nGUa+9WokQvVG4ZP7QwcR4GxM=; b=93IFqJ6pPP7/a7bkRI6L/cSkrVVDGtgoGvxe6KILlhLbvKZpTsK8P7/NIXub/B8jQ0btZjDWq c3Uy1+OWgclDMLpgTNV8Su9PB2rjKwpIvwi/vFZlyoPjXVw+O7LvZsO X-Developer-Key: i=thomas.weissschuh@linutronix.de; a=ed25519; pk=pfvxvpFUDJV2h2nY0FidLUml22uGLSjByFbM6aqQQws= Inclusion of any nolibc header file should also bring all other headers. On the other hand it should also be possible to include any nolibc header files in any order. Currently this is implemented by including the catch-all nolibc.h after the headers own definitions. This is problematic if one nolibc header depends on another one. The first header has to include the other one before defining any symbols. That in turn will include the rest of nolibc while the current header has not defined anything yet. If any other part of nolibc depends on definitions from the current header, errors are encountered. This is already the case today. Effectively nolibc can only be included in the order of nolibc.h. Restructure the way "nolibc.h" is included. Move it to the beginning of the header files and before the include guards. Now any header will behave exactly like "nolibc.h" while the include guards prevent any duplicate definitions. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/ctype.h | 6 +++--- tools/include/nolibc/dirent.h | 6 +++--- tools/include/nolibc/elf.h | 6 +++--- tools/include/nolibc/errno.h | 6 +++--- tools/include/nolibc/fcntl.h | 6 +++--- tools/include/nolibc/getopt.h | 6 +++--- tools/include/nolibc/signal.h | 6 +++--- tools/include/nolibc/stdio.h | 6 +++--- tools/include/nolibc/stdlib.h | 6 +++--- tools/include/nolibc/string.h | 7 +++---- tools/include/nolibc/sys.h | 6 +++--- tools/include/nolibc/sys/auxv.h | 6 +++--- tools/include/nolibc/sys/mman.h | 6 +++--- tools/include/nolibc/sys/stat.h | 7 +++---- tools/include/nolibc/sys/syscall.h | 6 +++--- tools/include/nolibc/sys/time.h | 6 +++--- tools/include/nolibc/sys/wait.h | 7 +++---- tools/include/nolibc/time.h | 6 +++--- tools/include/nolibc/types.h | 6 +++--- tools/include/nolibc/unistd.h | 6 +++--- 20 files changed, 60 insertions(+), 63 deletions(-) diff --git a/tools/include/nolibc/ctype.h b/tools/include/nolibc/ctype.h index 6f90706d06442d87e262cf36c00ce7fe61972dbf..470fdf34394a5045681c76c9750= c467cd944bb5e 100644 --- a/tools/include/nolibc/ctype.h +++ b/tools/include/nolibc/ctype.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_CTYPE_H #define _NOLIBC_CTYPE_H =20 @@ -96,7 +99,4 @@ int ispunct(int c) return isgraph(c) && !isalnum(c); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_CTYPE_H */ diff --git a/tools/include/nolibc/dirent.h b/tools/include/nolibc/dirent.h index 6c60ec4ba27baefc1fc59b607338909e55c50fb6..758b95c48e7a4c9779625160f1a= 60a5641513ddf 100644 --- a/tools/include/nolibc/dirent.h +++ b/tools/include/nolibc/dirent.h @@ -4,6 +4,9 @@ * Copyright (C) 2025 Thomas Wei=C3=9Fschuh */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_DIRENT_H #define _NOLIBC_DIRENT_H =20 @@ -94,7 +97,4 @@ int readdir_r(DIR *dirp, struct dirent *entry, struct dir= ent **result) return 0; } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_DIRENT_H */ diff --git a/tools/include/nolibc/elf.h b/tools/include/nolibc/elf.h index beb0b3a87569a3037055c8fe7e9b086a26ca7d13..3e2c5228bf3d99322754ac5ba88= 24a0e25624d55 100644 --- a/tools/include/nolibc/elf.h +++ b/tools/include/nolibc/elf.h @@ -4,12 +4,12 @@ * Copyright (C) 2025 Thomas Wei=C3=9Fschuh */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_SYS_ELF_H #define _NOLIBC_SYS_ELF_H =20 #include =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_SYS_ELF_H */ diff --git a/tools/include/nolibc/errno.h b/tools/include/nolibc/errno.h index 1d8d8033e8ff766ee4b3cf7efdb741d4208db04e..08a33c40ec0c18c70e32dda04a8= 35745dad8fb30 100644 --- a/tools/include/nolibc/errno.h +++ b/tools/include/nolibc/errno.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2022 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_ERRNO_H #define _NOLIBC_ERRNO_H =20 @@ -22,7 +25,4 @@ int errno __attribute__((weak)); */ #define MAX_ERRNO 4095 =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_ERRNO_H */ diff --git a/tools/include/nolibc/fcntl.h b/tools/include/nolibc/fcntl.h index 5feb08ad54a7d943b8100eac21f4058310efea91..bff2e542f20f9dbee34b88a51b0= 8ba2dfcf26464 100644 --- a/tools/include/nolibc/fcntl.h +++ b/tools/include/nolibc/fcntl.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_FCNTL_H #define _NOLIBC_FCNTL_H =20 @@ -63,7 +66,4 @@ int open(const char *path, int flags, ...) return __sysret(sys_open(path, flags, mode)); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_FCNTL_H */ diff --git a/tools/include/nolibc/getopt.h b/tools/include/nolibc/getopt.h index 5fd06c9702e96e8c58a6b242f535bca09db69343..217abb95264b286a9f6bcd50077= 9575a9a508352 100644 --- a/tools/include/nolibc/getopt.h +++ b/tools/include/nolibc/getopt.h @@ -5,6 +5,9 @@ * Copyright (C) 2025 Thomas Wei=C3=9Fschuh */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_GETOPT_H #define _NOLIBC_GETOPT_H =20 @@ -95,7 +98,4 @@ int getopt(int argc, char * const argv[], const char *opt= string) return c; } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_GETOPT_H */ diff --git a/tools/include/nolibc/signal.h b/tools/include/nolibc/signal.h index cdcc5904c51e93c524f9afc7d49a17feda3d9af2..ac13e53ac31d7c0fb1f58e42141= 7104caa32f765 100644 --- a/tools/include/nolibc/signal.h +++ b/tools/include/nolibc/signal.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2022 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_SIGNAL_H #define _NOLIBC_SIGNAL_H =20 @@ -20,7 +23,4 @@ int raise(int signal) return sys_kill(sys_getpid(), signal); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_SIGNAL_H */ diff --git a/tools/include/nolibc/stdio.h b/tools/include/nolibc/stdio.h index fb0417477759ee6c9663e84807c1d1067e735dec..8fa98abab2127c2cd175201d2f5= 0d71b78d03559 100644 --- a/tools/include/nolibc/stdio.h +++ b/tools/include/nolibc/stdio.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_STDIO_H #define _NOLIBC_STDIO_H =20 @@ -598,7 +601,4 @@ const char *strerror(int errno) return buf; } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_STDIO_H */ diff --git a/tools/include/nolibc/stdlib.h b/tools/include/nolibc/stdlib.h index 69cf1d4418f1c1f59192aee40ea3a5b684d2709a..4790298f985c2b0db91ec777140= 201b7ec869346 100644 --- a/tools/include/nolibc/stdlib.h +++ b/tools/include/nolibc/stdlib.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_STDLIB_H #define _NOLIBC_STDLIB_H =20 @@ -522,7 +525,4 @@ uintmax_t strtoumax(const char *nptr, char **endptr, in= t base) return __strtox(nptr, endptr, base, 0, UINTMAX_MAX); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_STDLIB_H */ diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h index f0d335f0e467ec870066811289dfd11e46e60a92..febfd69789666e2445b82423a5f= 4df5e18a1c774 100644 --- a/tools/include/nolibc/string.h +++ b/tools/include/nolibc/string.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_STRING_H #define _NOLIBC_STRING_H =20 @@ -305,8 +308,4 @@ int toupper(int c) return c; } =20 - -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_STRING_H */ diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index bc47007f04429e5b1ff7d57f21e566fa235f6512..68e60e6742114a5422c8afef56a= 67415ed652c2f 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_SYS_H #define _NOLIBC_SYS_H =20 @@ -1119,7 +1122,4 @@ int memfd_create(const char *name, unsigned int flags) return __sysret(sys_memfd_create(name, flags)); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_SYS_H */ diff --git a/tools/include/nolibc/sys/auxv.h b/tools/include/nolibc/sys/aux= v.h index 04c2b9cbe51a262025bbbc7c74a0640c71529eab..c52463d6c18d7a38f40344c1817= bef3a4a121e7a 100644 --- a/tools/include/nolibc/sys/auxv.h +++ b/tools/include/nolibc/sys/auxv.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_AUXV_H #define _NOLIBC_SYS_AUXV_H =20 @@ -35,7 +38,4 @@ unsigned long getauxval(unsigned long type) return ret; } =20 -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_AUXV_H */ diff --git a/tools/include/nolibc/sys/mman.h b/tools/include/nolibc/sys/mma= n.h index ad9d06b6b7919ec76a0652266158366cf639a77a..41c7bf45e427b96efec94936489= 0e9c2b9c226a5 100644 --- a/tools/include/nolibc/sys/mman.h +++ b/tools/include/nolibc/sys/mman.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_MMAN_H #define _NOLIBC_SYS_MMAN_H =20 @@ -57,7 +60,4 @@ int munmap(void *addr, size_t length) return __sysret(sys_munmap(addr, length)); } =20 -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_MMAN_H */ diff --git a/tools/include/nolibc/sys/stat.h b/tools/include/nolibc/sys/sta= t.h index 0eaf5496ce233a4d8b5a239eef5ecefe05a39dd6..987c8bb52502f1f758005b0afdf= b2e39fc8ea1c6 100644 --- a/tools/include/nolibc/sys/stat.h +++ b/tools/include/nolibc/sys/stat.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_STAT_H #define _NOLIBC_SYS_STAT_H =20 @@ -67,8 +70,4 @@ int stat(const char *path, struct stat *buf) return 0; } =20 - -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_STAT_H */ diff --git a/tools/include/nolibc/sys/syscall.h b/tools/include/nolibc/sys/= syscall.h index 59efdec8fd1c8cd9f282d1e9ea52431003342a7f..4bf97f1386a03d6db33ebf1f8de= 116ba72a5e608 100644 --- a/tools/include/nolibc/sys/syscall.h +++ b/tools/include/nolibc/sys/syscall.h @@ -4,6 +4,9 @@ * Copyright (C) 2024 Thomas Wei=C3=9Fschuh */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_SYSCALL_H #define _NOLIBC_SYS_SYSCALL_H =20 @@ -13,7 +16,4 @@ #define _syscall_n(N, ...) _syscall(N, __VA_ARGS__) #define syscall(...) _syscall_n(_syscall_narg(__VA_ARGS__), ##__VA_ARGS__) =20 -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_SYSCALL_H */ diff --git a/tools/include/nolibc/sys/time.h b/tools/include/nolibc/sys/tim= e.h index 1d326c05ee627b6bdb7d2777cbb11eea385f2407..785961c52fa3b6606ee30c19a4a= 1c11e86ccacc0 100644 --- a/tools/include/nolibc/sys/time.h +++ b/tools/include/nolibc/sys/time.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_TIME_H #define _NOLIBC_SYS_TIME_H =20 @@ -30,7 +33,4 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) return __sysret(sys_gettimeofday(tv, tz)); } =20 -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_TIME_H */ diff --git a/tools/include/nolibc/sys/wait.h b/tools/include/nolibc/sys/wai= t.h index 9a68e6a6b1df8f938225007eb0de0574257ccf00..f27be86ad5e480f3817b4500ac4= 2fae445cdfc27 100644 --- a/tools/include/nolibc/sys/wait.h +++ b/tools/include/nolibc/sys/wait.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "../nolibc.h" + #ifndef _NOLIBC_SYS_WAIT_H #define _NOLIBC_SYS_WAIT_H =20 @@ -110,8 +113,4 @@ pid_t waitpid(pid_t pid, int *status, int options) return info.si_pid; } =20 - -/* make sure to include all global symbols */ -#include "../nolibc.h" - #endif /* _NOLIBC_SYS_WAIT_H */ diff --git a/tools/include/nolibc/time.h b/tools/include/nolibc/time.h index 84655361b9ad2ce141f9af2759f2b128ae8a83a3..9502f9aaf62110ec8ee113fcf08= dd47de40e924c 100644 --- a/tools/include/nolibc/time.h +++ b/tools/include/nolibc/time.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2022 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_TIME_H #define _NOLIBC_TIME_H =20 @@ -25,7 +28,4 @@ time_t time(time_t *tptr) return tv.tv_sec; } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_TIME_H */ diff --git a/tools/include/nolibc/types.h b/tools/include/nolibc/types.h index 32d0929c633bbae29263375c461a0c82baf7f869..fe97953d16572db3e4c18cdc892= 1c6a991d64f94 100644 --- a/tools/include/nolibc/types.h +++ b/tools/include/nolibc/types.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2021 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_TYPES_H #define _NOLIBC_TYPES_H =20 @@ -214,7 +217,4 @@ struct stat { }) #endif =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_TYPES_H */ diff --git a/tools/include/nolibc/unistd.h b/tools/include/nolibc/unistd.h index ac7d53d986cd11ac84dd0a17e5a7055c779b2b10..ed253305fdbafd040ca5820207d= 8c53c6ea9f9fc 100644 --- a/tools/include/nolibc/unistd.h +++ b/tools/include/nolibc/unistd.h @@ -4,6 +4,9 @@ * Copyright (C) 2017-2022 Willy Tarreau */ =20 +/* make sure to include all global symbols */ +#include "nolibc.h" + #ifndef _NOLIBC_UNISTD_H #define _NOLIBC_UNISTD_H =20 @@ -56,7 +59,4 @@ int tcsetpgrp(int fd, pid_t pid) return ioctl(fd, TIOCSPGRP, &pid); } =20 -/* make sure to include all global symbols */ -#include "nolibc.h" - #endif /* _NOLIBC_UNISTD_H */ --=20 2.49.0 From nobody Mon Feb 9 05:37:17 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4451122577D; Thu, 24 Apr 2025 11:48:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495300; cv=none; b=uci9Tn9ZE75QeQRqQ9GytkOuK5Gn8l/tEyuI85ZxImae4CvRRaMlGGLT6DpWzKbWdIxqGBBBkbpadRcGlxJM+rRhv2YyrQUIzFMQyO5c9RRFtQzdJjbHUv3m8JUgEDc94ESMigiiH8ZXGuV7t+9oDVEC8OmTFnnSJR/1uVLJlKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745495300; c=relaxed/simple; bh=C+1D7R75jEC58jOR/Yqz3KgquUzsYptXPbHIO1u4B1o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fUvmnzwDZE2fS8fvLs1NXWriPXgWcT9K6wYfI5Y5Mg4JIk3YGz0Dn63w9MPLIaWaXDmAevbeV1QvWctucF1ACP9TbV3MMBWAzFcw0wC4ttSZs00NQOO1hnBLKsLwmE6HAnKwURxKmyTf4CxK9H/1heAd4uh7UFh+tNbq/9eJ73o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=TorOVnQd; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=EQyldH/K; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="TorOVnQd"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="EQyldH/K" From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1745495297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4pTunsNZTf1GYNEw0PoHmf2OJAl/C/kA5v9wUIBqoHs=; b=TorOVnQd8sB9X8s9Jqi7s53+nOfoXkBmJlExwlGZODSHWB+TGhgSzH7mLwvP6jPqNWV6WR Qf46SVZQt9suyQppb4dkrGxoeHK28ui0E2fq8jMcdtCAz0yz3Zes0G7BNwGytZxuDk6VUe LkHatAk2VDe+DENtMSA7gpWORiVswAPVCriK3CAOs90pEvNPFHUzQ2UZDvZ9T3XUAmpKHF oMjNz6EQU4FwfVF4BouVlwLxN+rV9igDwcTtmNKggsKFLpLC8BoU9ofv6OVIT2IbP0z0OC 5pFCnDvoVgNdt6bFRlZGf2kgyeLgQ7+PNsxKbZWeqsB9wI6deIZEHBfPbOIBnw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1745495297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4pTunsNZTf1GYNEw0PoHmf2OJAl/C/kA5v9wUIBqoHs=; b=EQyldH/KGtiKOmjEWR9ukCL7GAn8mMzOcDunZQ+17+DljnwjaRwBtEIHcrRFM3AltIIdxz Xv/cTySMT5RA+OCg== Date: Thu, 24 Apr 2025 13:48:13 +0200 Subject: [PATCH 3/3] selftests/nolibc: always run nolibc header check Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-nolibc-header-check-v1-3-011576b6ed6f@linutronix.de> References: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> In-Reply-To: <20250424-nolibc-header-check-v1-0-011576b6ed6f@linutronix.de> To: Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Developer-Signature: v=1; a=ed25519-sha256; t=1745495292; l=1070; i=thomas.weissschuh@linutronix.de; s=20240209; h=from:subject:message-id; bh=C+1D7R75jEC58jOR/Yqz3KgquUzsYptXPbHIO1u4B1o=; b=FTM/8BjgFZUV0ReGkM5KXSWsYHgNoPqSWHNWl+yDaanP3jpt+9lmEvkfKYe9AWv25DP7P27yF UAJZpdoPXQtC4OOL+v7WmVnkAZO7rJvnDBN1Vp0zUSfj2kp6aedmlQ7 X-Developer-Key: i=thomas.weissschuh@linutronix.de; a=ed25519; pk=pfvxvpFUDJV2h2nY0FidLUml22uGLSjByFbM6aqQQws= Prevent regressions of issues validates by the header check by always running it together with the nolibc selftests. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/testing/selftests/nolibc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selfte= sts/nolibc/Makefile index 94f3e8be7a68f63ecd639c4f283b3cd10764ce74..d17750761d9f418b27c571de1cf= 3d0f4954877fd 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -251,7 +251,7 @@ sysroot/$(ARCH)/include: $(Q)rm -rf sysroot/$(ARCH) sysroot/sysroot $(QUIET_MKDIR)mkdir -p sysroot $(Q)$(MAKE) -C $(srctree) outputmakefile - $(Q)$(MAKE) -C $(srctree)/tools/include/nolibc ARCH=3D$(ARCH) OUTPUT=3D$(= CURDIR)/sysroot/ headers_standalone + $(Q)$(MAKE) -C $(srctree)/tools/include/nolibc ARCH=3D$(ARCH) OUTPUT=3D$(= CURDIR)/sysroot/ headers_standalone headers_check $(Q)mv sysroot/sysroot sysroot/$(ARCH) =20 ifneq ($(NOLIBC_SYSROOT),0) --=20 2.49.0