From nobody Sun Jun 14 19:01:43 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (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 4409ADDCD for ; Sun, 5 Apr 2026 09:06:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380002; cv=none; b=i5kRi550FbOl3mB3GfkP5SWSy/Bq1EQCalAAuRuO9ps48iPE1Iq14FOs06iyTe3Ut2Cip8fZkujmjtqN6apnCcIh8/lx7cctRoPrOESkE9pEJm5S/3EjdwviItw9Ag7FsyPMcGYl3XWxwJTcXR62VwpKxX0iSGC7lt4+uaTwVjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380002; c=relaxed/simple; bh=JLlCks+QEVe/gQ9LoEOoPzoElrNbkl5Fp87eEAHVdoQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Bgnzbe/+90exER+pk/lB3EKLkU7eD4EFVQjoXWm+083QpOnI49rnTjIpZ8uP6GqACSybhh50qqGQIgK+kAGKAitoFOeda0WDCT7yXcifPFifO7h29PbS2+sOj/GOQSZzQUEzPU+9w/dOiTVmTW9ZISy6BU6ECCT1yQh5WABekWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=r/X8FCao; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="r/X8FCao" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775379990; bh=JLlCks+QEVe/gQ9LoEOoPzoElrNbkl5Fp87eEAHVdoQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r/X8FCao2p8e3lYptgX8TJzSqiEF5qwRPq5TBpxH/ce/HU4C2bS3lJCO7VGZaEg+z kJgxwpw2WnBUfsW00svEtaoiQECIME7erPdHV8YxJYTZ4HLojHNkQcx2gFNAQ3iRjZ zsP/8EoiNZJPjnngTDfL2Z50+meQHXlfXoeFJFQk= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sun, 05 Apr 2026 11:06:23 +0200 Subject: [PATCH 1/3] tools/nolibc: rename the internal macros used in syscall() 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: <20260405-nolibc-syscall-v1-1-e5b12bc63211@weissschuh.net> References: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> In-Reply-To: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775379990; l=1521; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=JLlCks+QEVe/gQ9LoEOoPzoElrNbkl5Fp87eEAHVdoQ=; b=OVbI/zPNjx7Q1BBUiR6bnvx6RDfWl0+TN5s53gT2hnFUB7cN9q9wB/TI5pwMTGDqTPwOsgyaa rrq3SSHMxS0Bt5H10S0hs4M9IlVCfIaOCnDaFtSgN4TKfUAsTyaO+zM X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= These macros are the internal implementation of syscall(). They can not be used by users. Align them with the standard naming scheme for internal symbols. The current name also prevents the addition of an application-usable _syscall() symbol. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/syscall.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/include/nolibc/sys/syscall.h b/tools/include/nolibc/sys/= syscall.h index 8cbcae4a32aa..b673f3d0c0f8 100644 --- a/tools/include/nolibc/sys/syscall.h +++ b/tools/include/nolibc/sys/syscall.h @@ -10,10 +10,10 @@ #ifndef _NOLIBC_SYS_SYSCALL_H #define _NOLIBC_SYS_SYSCALL_H =20 -#define __syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N -#define _syscall_narg(...) __syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0) -#define _syscall(N, ...) __sysret(__nolibc_syscall##N(__VA_ARGS__)) -#define _syscall_n(N, ...) _syscall(N, __VA_ARGS__) -#define syscall(...) _syscall_n(_syscall_narg(__VA_ARGS__), ##__VA_ARGS__) +#define ___nolibc_syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N +#define __nolibc_syscall_narg(...) ___nolibc_syscall_narg(__VA_ARGS__, 6, = 5, 4, 3, 2, 1, 0) +#define __nolibc_syscall(N, ...) __sysret(__nolibc_syscall##N(__VA_ARGS__)) +#define __nolibc_syscall_n(N, ...) __nolibc_syscall(N, __VA_ARGS__) +#define syscall(...) __nolibc_syscall_n(__nolibc_syscall_narg(__VA_ARGS__)= , ##__VA_ARGS__) =20 #endif /* _NOLIBC_SYS_SYSCALL_H */ --=20 2.53.0 From nobody Sun Jun 14 19:01:43 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (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 441B536B06C for ; Sun, 5 Apr 2026 09:06:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380000; cv=none; b=cpPDTRETt7h8WxfVn5aW+lLSeMAfBhO9dtMzvMVVNQnEc09lA5+EBZI8TwhRopIcLBxkZmO4hP4sm6nB8xlu0p9Q63+WCPM41QAIPmJ78lRtNVhmPMwYX3simwwBDqcH68yRX1nLvuZdEqbj0tDZyasu6rL4WfS/StEWpBxKfuM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380000; c=relaxed/simple; bh=gKDh5qJ5BIT5FvuWpomT0eEwad3a+n8lyDs9up8VglE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jylBQv74CXBvLdu3nD/FW/bsqA/07p8RV4b1c0fnargfntUM8Hkdj/x//uejpRk6Ho5HGc4ifGoTCP0BDS7DppZpLulu8LLs7iWYTtwwKJBtL/hh3jV/mBXRi8CydEpkSqD2Cc7zaCntqptRaTVzYxGMx0yFURQ0CMsnxLwlti8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=SI0o8nHn; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="SI0o8nHn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775379990; bh=gKDh5qJ5BIT5FvuWpomT0eEwad3a+n8lyDs9up8VglE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SI0o8nHne2WWXW1zW60l7VRKHOzE94N0Q3CWpGU10Y20U20FyYM02fJ9LqMtjCwts 3aCed0iNuFtCP6KG+RXOboyEPooe41/w9sv9Wx/hE+z4RCLxbmx7CYUJDrmPUTQzOE HVMLcEpODjlcCYJc1v2LLelY0RSYQgfuoS9wm2ns= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sun, 05 Apr 2026 11:06:24 +0200 Subject: [PATCH 2/3] tools/nolibc: move the call to __sysret() into syscall() 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: <20260405-nolibc-syscall-v1-2-e5b12bc63211@weissschuh.net> References: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> In-Reply-To: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775379990; l=1306; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=gKDh5qJ5BIT5FvuWpomT0eEwad3a+n8lyDs9up8VglE=; b=MAFskPkLNQw3idaTnQCUYSyQhUsjA0GOQWmJZfSt6SsnRa1XvN7mW3Kz4uu/qNTYnqCgSmxy2 iSwMf4mI4FLDTg1Qv5BDkakIqWyMYWJ0x8ityoS1sowDydBxiz8+qbx X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= __sysret() transforms the return value from the kernel into the libc return value convention. There is no reason for it to be called in the middle of the internals of the syscall() implementation macros. Move the call up, directly into syscall(), to make the code simpler. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/syscall.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/include/nolibc/sys/syscall.h b/tools/include/nolibc/sys/= syscall.h index b673f3d0c0f8..3f43fac3d7b8 100644 --- a/tools/include/nolibc/sys/syscall.h +++ b/tools/include/nolibc/sys/syscall.h @@ -12,8 +12,8 @@ =20 #define ___nolibc_syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N #define __nolibc_syscall_narg(...) ___nolibc_syscall_narg(__VA_ARGS__, 6, = 5, 4, 3, 2, 1, 0) -#define __nolibc_syscall(N, ...) __sysret(__nolibc_syscall##N(__VA_ARGS__)) +#define __nolibc_syscall(N, ...) __nolibc_syscall##N(__VA_ARGS__) #define __nolibc_syscall_n(N, ...) __nolibc_syscall(N, __VA_ARGS__) -#define syscall(...) __nolibc_syscall_n(__nolibc_syscall_narg(__VA_ARGS__)= , ##__VA_ARGS__) +#define syscall(...) __sysret(__nolibc_syscall_n(__nolibc_syscall_narg(__V= A_ARGS__), ##__VA_ARGS__)) =20 #endif /* _NOLIBC_SYS_SYSCALL_H */ --=20 2.53.0 From nobody Sun Jun 14 19:01:43 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (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 4413235A385 for ; Sun, 5 Apr 2026 09:06:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380000; cv=none; b=TtnrjF2LWyJeZ7WZ7urPRxy06xIIbxxc+e26fN4/LvjjjpLs+NQC3RQ2rTU/Sx0IHw0NKU9Ye8tsC6hhb665mKaVqj2F5GQ63Zm9F5kV1yTtfv+HFI5vd+BCQlFeAlMnNo9ORu+f+jPIXwGKntVc6TXKBkwnqRGjNPqeuOXYEJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775380000; c=relaxed/simple; bh=i2HBnBgav9cMaQFN4kEDZVr9du0PVr+2NcUUHxGu/zo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LfzvsirVI3ZsuFl00xOj9mWqYauNi9kmEscBb52LafpnY4lzpMbeU4TvAGv/Ml1h6Fhbid/eiYRIJ86B7YlTsYFc9c0jhAW5IjGKKlAFYIfjhvG9wXCxTZuBSU98gnEE3ryervoFjA+Qh+zM9B+rmGYlPeZ27khR3Lza2jHioKQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=GEC53TZ7; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="GEC53TZ7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1775379990; bh=i2HBnBgav9cMaQFN4kEDZVr9du0PVr+2NcUUHxGu/zo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GEC53TZ7Bh9dLtnpg9VW+DFR5h34/JUIxx9qX3fhmlngA935QP0EHClG8yeUzFb6/ IfqIEV/9KvEwyyxfv4zGc2JWXUW+YhvgqG9o01aIoA7mra8yP00xaC4NZwMTqLxKL7 yGH3cBV+sv1/HSl8cB3lsbMhpfT0KraiGSCyfJwI= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Sun, 05 Apr 2026 11:06:25 +0200 Subject: [PATCH 3/3] tools/nolibc: add the _syscall() macro 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: <20260405-nolibc-syscall-v1-3-e5b12bc63211@weissschuh.net> References: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> In-Reply-To: <20260405-nolibc-syscall-v1-0-e5b12bc63211@weissschuh.net> To: Willy Tarreau Cc: linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775379990; l=2769; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=i2HBnBgav9cMaQFN4kEDZVr9du0PVr+2NcUUHxGu/zo=; b=UsanvSusPyKufdiyztUYDARvLQrOnDzNn71HgGphnrL5ep9UwaY7YYaicVrUBwzEatTr9MeGp FBa4kjmgGsMDCLNsxDYz+pwnRJp32kEFshfFX1+UTWErUOVGtBk/v59 X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The standard syscall() function or macro uses the libc return value convention. Errors returned from the kernel as negative values are stored in errno and -1 is returned. Users which want to avoid using errno don't have a way to call raw syscalls and check the returned error. Add a new macro _syscall() which works like the standard syscall() but passes through the return value from the kernel unchanged. The naming scheme and return values match the named _sys_foo() system call wrappers already part of nolibc. Signed-off-by: Thomas Wei=C3=9Fschuh Acked-by: Willy Tarreau --- tools/include/nolibc/sys/syscall.h | 3 ++- tools/testing/selftests/nolibc/nolibc-test.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/sys/syscall.h b/tools/include/nolibc/sys/= syscall.h index 3f43fac3d7b8..7f06314fcf0d 100644 --- a/tools/include/nolibc/sys/syscall.h +++ b/tools/include/nolibc/sys/syscall.h @@ -14,6 +14,7 @@ #define __nolibc_syscall_narg(...) ___nolibc_syscall_narg(__VA_ARGS__, 6, = 5, 4, 3, 2, 1, 0) #define __nolibc_syscall(N, ...) __nolibc_syscall##N(__VA_ARGS__) #define __nolibc_syscall_n(N, ...) __nolibc_syscall(N, __VA_ARGS__) -#define syscall(...) __sysret(__nolibc_syscall_n(__nolibc_syscall_narg(__V= A_ARGS__), ##__VA_ARGS__)) +#define _syscall(...) __nolibc_syscall_n(__nolibc_syscall_narg(__VA_ARGS__= ), ##__VA_ARGS__) +#define syscall(...) __sysret(_syscall(__VA_ARGS__)) =20 #endif /* _NOLIBC_SYS_SYSCALL_H */ diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/s= elftests/nolibc/nolibc-test.c index dd10402267ee..4bcf46867603 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -95,6 +95,8 @@ static const int is_glibc =3D /* readdir_r() is likely to be marked deprecated */ #undef readdir_r #define readdir_r(dir, dirent, result) ((errno =3D EINVAL), -1) + +#define _syscall(...) 0 #endif =20 /* definition of a series of tests */ @@ -1507,6 +1509,8 @@ int run_syscall(int min, int max) CASE_TEST(ptrace); EXPECT_SYSER(1, ptrace(PTRACE_CONT, getpid= (), NULL, NULL), -1, ESRCH); break; CASE_TEST(syscall_noargs); EXPECT_SYSEQ(1, syscall(__NR_getpid), getp= id()); break; CASE_TEST(syscall_args); EXPECT_SYSER(1, syscall(__NR_statx, 0, NUL= L, 0, 0, NULL), -1, EFAULT); break; + CASE_TEST(_syscall_noargs); EXPECT_SYSEQ(is_nolibc, _syscall(__NR_getp= id), getpid()); break; + CASE_TEST(_syscall_args); EXPECT_SYSEQ(is_nolibc, _syscall(__NR_stat= x, 0, NULL, 0, 0, NULL), -EFAULT); break; CASE_TEST(namespace); EXPECT_SYSZR(euid0 && proc, test_namespace= ()); break; case __LINE__: return ret; /* must be last */ --=20 2.53.0