Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] update kernel-libc-headers, backport syscall numbers and statx for musl
@ 2025-04-01 23:33 Duncaen
  2025-04-02  7:57 ` oreo639
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Duncaen @ 2025-04-01 23:33 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 745 bytes --]

There is a new pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages new-syscalls
https://github.com/void-linux/void-packages/pull/54941

update kernel-libc-headers, backport syscall numbers and statx for musl
`statx` backport is easy and just applies, for the syscall numbers in `syscalls.h` I just copied over the new values instead of applying all the upstream patches in order since that would be +1k lines instead of just 300.

There is no reason to keep `kernel-libc-headers` on on old version and its generally suggested to use the latest available one, even if you target old kernels.

A patch file from https://github.com/void-linux/void-packages/pull/54941.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-new-syscalls-54941.patch --]
[-- Type: text/x-diff, Size: 18913 bytes --]

From 6a5013bad5675172f5f204128096a0fd34bff43e Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Wed, 2 Apr 2025 01:28:12 +0200
Subject: [PATCH 1/2] musl: backport syscall numbers and statx

---
 ...541f1cfd38e4b81257b3215e276ea9d0fc61.patch | 135 +++++++
 srcpkgs/musl/patches/new-syscalls.patch       | 370 ++++++++++++++++++
 srcpkgs/musl/template                         |   2 +-
 3 files changed, 506 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/musl/patches/b817541f1cfd38e4b81257b3215e276ea9d0fc61.patch
 create mode 100644 srcpkgs/musl/patches/new-syscalls.patch

diff --git a/srcpkgs/musl/patches/b817541f1cfd38e4b81257b3215e276ea9d0fc61.patch b/srcpkgs/musl/patches/b817541f1cfd38e4b81257b3215e276ea9d0fc61.patch
new file mode 100644
index 00000000000000..ed67995426333f
--- /dev/null
+++ b/srcpkgs/musl/patches/b817541f1cfd38e4b81257b3215e276ea9d0fc61.patch
@@ -0,0 +1,135 @@
+From b817541f1cfd38e4b81257b3215e276ea9d0fc61 Mon Sep 17 00:00:00 2001
+From: Duncan Bellamy <dunk@denkimushi.com>
+Date: Wed, 31 Aug 2022 20:07:34 +0100
+Subject: [PATCH] add statx interface using syscall, fallback to fstatat
+
+---
+ include/sys/stat.h | 55 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/linux/statx.c  | 42 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 97 insertions(+)
+ create mode 100644 src/linux/statx.c
+
+diff --git a/include/sys/stat.h b/include/sys/stat.h
+index e6d0049c..6690192d 100644
+--- a/include/sys/stat.h
++++ b/include/sys/stat.h
+@@ -18,6 +18,13 @@ extern "C" {
+ #define __NEED_blkcnt_t
+ #define __NEED_struct_timespec
+ 
++#ifdef _GNU_SOURCE
++#define __NEED_int64_t
++#define __NEED_uint64_t
++#define __NEED_uint32_t
++#define __NEED_uint16_t
++#endif
++
+ #include <bits/alltypes.h>
+ 
+ #include <bits/stat.h>
+@@ -98,6 +105,54 @@ int lchmod(const char *, mode_t);
+ #define S_IEXEC S_IXUSR
+ #endif
+ 
++#if defined(_GNU_SOURCE)
++#define STATX_TYPE 1U
++#define STATX_MODE 2U
++#define STATX_NLINK 4U
++#define STATX_UID 8U
++#define STATX_GID 0x10U
++#define STATX_ATIME 0x20U
++#define STATX_MTIME 0x40U
++#define STATX_CTIME 0x80U
++#define STATX_INO 0x100U
++#define STATX_SIZE 0x200U
++#define STATX_BLOCKS 0x400U
++#define STATX_BASIC_STATS 0x7ffU
++#define STATX_BTIME 0x800U
++#define STATX_ALL 0xfffU
++
++struct statx_timestamp {
++	int64_t tv_sec;
++	uint32_t tv_nsec, __pad;
++};
++
++struct statx {
++	uint32_t stx_mask;
++	uint32_t stx_blksize;
++	uint64_t stx_attributes;
++	uint32_t stx_nlink;
++	uint32_t stx_uid;
++	uint32_t stx_gid;
++	uint16_t stx_mode;
++	uint16_t __pad0[1];
++	uint64_t stx_ino;
++	uint64_t stx_size;
++	uint64_t stx_blocks;
++	uint64_t stx_attributes_mask;
++	struct statx_timestamp stx_atime;
++	struct statx_timestamp stx_btime;
++	struct statx_timestamp stx_ctime;
++	struct statx_timestamp stx_mtime;
++	uint32_t stx_rdev_major;
++	uint32_t stx_rdev_minor;
++	uint32_t stx_dev_major;
++	uint32_t stx_dev_minor;
++	uint64_t __pad1[14];
++};
++
++int statx(int, const char *__restrict, int, unsigned, struct statx *__restrict);
++#endif
++
+ #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+ #define stat64 stat
+ #define fstat64 fstat
+diff --git a/src/linux/statx.c b/src/linux/statx.c
+new file mode 100644
+index 00000000..4616bff4
+--- /dev/null
++++ b/src/linux/statx.c
+@@ -0,0 +1,42 @@
++#define _GNU_SOURCE
++#include <sys/stat.h>
++#include <string.h>
++#include <syscall.h>
++#include <sys/sysmacros.h>
++#include <errno.h>
++
++int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct statx *restrict stx)
++{
++	int ret = __syscall(SYS_statx, dirfd, path, flags, mask, stx);
++
++#ifndef SYS_fstatat
++	return __syscall_ret(ret);
++#endif
++
++	if (ret != -ENOSYS) return __syscall_ret(ret);
++
++	struct stat st;
++	ret = fstatat(dirfd, path, &st, flags);
++	if (ret) return ret;
++
++	stx->stx_dev_major = major(st.st_dev);
++	stx->stx_dev_minor = minor(st.st_dev);
++	stx->stx_ino = st.st_ino;
++	stx->stx_mode = st.st_mode;
++	stx->stx_nlink = st.st_nlink;
++	stx->stx_uid = st.st_uid;
++	stx->stx_gid = st.st_gid;
++	stx->stx_size = st.st_size;
++	stx->stx_blksize = st.st_blksize;
++	stx->stx_blocks = st.st_blocks;
++	stx->stx_atime.tv_sec = st.st_atim.tv_sec;
++	stx->stx_atime.tv_nsec = st.st_atim.tv_nsec;
++	stx->stx_mtime.tv_sec = st.st_mtim.tv_sec;
++	stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec;
++	stx->stx_ctime.tv_sec = st.st_ctim.tv_sec;
++	stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec;
++	stx->stx_btime = (struct statx_timestamp){.tv_sec=0, .tv_nsec=0};
++	stx->stx_mask = STATX_BASIC_STATS;
++
++	return 0;
++}
+-- 
+2.48.1
+
diff --git a/srcpkgs/musl/patches/new-syscalls.patch b/srcpkgs/musl/patches/new-syscalls.patch
new file mode 100644
index 00000000000000..6b2bdc20121966
--- /dev/null
+++ b/srcpkgs/musl/patches/new-syscalls.patch
@@ -0,0 +1,370 @@
+--- a/arch/aarch64/bits/syscall.h.in
++++ b/arch/aarch64/bits/syscall.h.in
+@@ -287,4 +287,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		4434
++#define __NR_clone3		4435
++#define __NR_close_range	4436
++#define __NR_openat2		4437
++#define __NR_pidfd_getfd	4438
++#define __NR_faccessat2		4439
++#define __NR_process_madvise	4440
++#define __NR_epoll_pwait2	4441
++#define __NR_mount_setattr	4442
++#define __NR_landlock_create_ruleset	4444
++#define __NR_landlock_add_rule	4445
++#define __NR_landlock_restrict_self	4446
++#define __NR_process_mrelease	4448
++#define __NR_futex_waitv	4449
++#define __NR_set_mempolicy_home_node	4450
++#define __NR_cachestat		4451
++#define __NR_fchmodat2		4452
+ 
+--- a/arch/arm/bits/syscall.h.in
++++ b/arch/arm/bits/syscall.h.in
+@@ -387,6 +387,23 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+ #define __ARM_NR_breakpoint	0x0f0001
+ #define __ARM_NR_cacheflush	0x0f0002
+--- a/arch/i386/bits/syscall.h.in
++++ b/arch/i386/bits/syscall.h.in
+@@ -424,4 +424,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/m68k/bits/syscall.h.in
++++ b/arch/m68k/bits/syscall.h.in
+@@ -404,3 +404,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
++
+--- a/arch/microblaze/bits/syscall.h.in
++++ b/arch/microblaze/bits/syscall.h.in
+@@ -425,4 +425,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/mips/bits/syscall.h.in
++++ b/arch/mips/bits/syscall.h.in
+@@ -406,4 +406,21 @@
+ #define __NR_fsconfig		4431
+ #define __NR_fsmount		4432
+ #define __NR_fspick		4433
++#define __NR_pidfd_open		4434
++#define __NR_clone3		4435
++#define __NR_close_range	4436
++#define __NR_openat2		4437
++#define __NR_pidfd_getfd	4438
++#define __NR_faccessat2		4439
++#define __NR_process_madvise	4440
++#define __NR_epoll_pwait2	4441
++#define __NR_mount_setattr	4442
++#define __NR_landlock_create_ruleset	4444
++#define __NR_landlock_add_rule	4445
++#define __NR_landlock_restrict_self	4446
++#define __NR_process_mrelease	4448
++#define __NR_futex_waitv	4449
++#define __NR_set_mempolicy_home_node	4450
++#define __NR_cachestat		4451
++#define __NR_fchmodat2		4452
+ 
+--- a/arch/mips64/bits/syscall.h.in
++++ b/arch/mips64/bits/syscall.h.in
+@@ -336,4 +336,21 @@
+ #define __NR_fsconfig		5431
+ #define __NR_fsmount		5432
+ #define __NR_fspick		5433
++#define __NR_pidfd_open		5434
++#define __NR_clone3		5435
++#define __NR_close_range	5436
++#define __NR_openat2		5437
++#define __NR_pidfd_getfd	5438
++#define __NR_faccessat2		5439
++#define __NR_process_madvise	5440
++#define __NR_epoll_pwait2	5441
++#define __NR_mount_setattr	5442
++#define __NR_landlock_create_ruleset	5444
++#define __NR_landlock_add_rule	5445
++#define __NR_landlock_restrict_self	5446
++#define __NR_process_mrelease	5448
++#define __NR_futex_waitv	5449
++#define __NR_set_mempolicy_home_node	5450
++#define __NR_cachestat		5451
++#define __NR_fchmodat2		5452
+ 
+--- a/arch/mipsn32/bits/syscall.h.in
++++ b/arch/mipsn32/bits/syscall.h.in
+@@ -360,4 +360,21 @@
+ #define __NR_fsconfig		6431
+ #define __NR_fsmount		6432
+ #define __NR_fspick		6433
++#define __NR_pidfd_open		6434
++#define __NR_clone3		6435
++#define __NR_close_range	6436
++#define __NR_openat2		6437
++#define __NR_pidfd_getfd	6438
++#define __NR_faccessat2		6439
++#define __NR_process_madvise	6440
++#define __NR_epoll_pwait2	6441
++#define __NR_mount_setattr	6442
++#define __NR_landlock_create_ruleset	6444
++#define __NR_landlock_add_rule	6445
++#define __NR_landlock_restrict_self	6446
++#define __NR_process_mrelease	6448
++#define __NR_futex_waitv	6449
++#define __NR_set_mempolicy_home_node	6450
++#define __NR_cachestat		6451
++#define __NR_fchmodat2		6452
+ 
+--- a/arch/or1k/bits/syscall.h.in
++++ b/arch/or1k/bits/syscall.h.in
+@@ -309,4 +309,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/powerpc/bits/syscall.h.in
++++ b/arch/powerpc/bits/syscall.h.in
+@@ -413,4 +413,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/riscv64/bits/syscall.h.in
++++ b/arch/riscv64/bits/syscall.h.in
+@@ -287,6 +287,23 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+ #define __NR_sysriscv __NR_arch_specific_syscall
+ #define __NR_riscv_flush_icache (__NR_sysriscv + 15)
+--- a/arch/s390x/bits/syscall.h.in
++++ b/arch/s390x/bits/syscall.h.in
+@@ -350,4 +350,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/sh/bits/syscall.h.in
++++ b/arch/sh/bits/syscall.h.in
+@@ -397,4 +397,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/x32/bits/syscall.h.in
++++ b/arch/x32/bits/syscall.h.in
+@@ -296,6 +296,24 @@
+ #define __NR_fsconfig		(0x40000000 + 431)
+ #define __NR_fsmount		(0x40000000 + 432)
+ #define __NR_fspick		(0x40000000 + 433)
++#define __NR_pidfd_open		(0x40000000 + 434)
++#define __NR_clone3		(0x40000000 + 435)
++#define __NR_close_range	(0x40000000 + 436)
++#define __NR_openat2		(0x40000000 + 437)
++#define __NR_pidfd_getfd	(0x40000000 + 438)
++#define __NR_faccessat2		(0x40000000 + 439)
++#define __NR_process_madvise	(0x40000000 + 440)
++#define __NR_epoll_pwait2	(0x40000000 + 441)
++#define __NR_mount_setattr	(0x40000000 + 442)
++#define __NR_landlock_create_ruleset	(0x40000000 + 444)
++#define __NR_landlock_add_rule	(0x40000000 + 445)
++#define __NR_landlock_restrict_self	(0x40000000 + 446)
++#define __NR_memfd_secret	(0x40000000 + 447)
++#define __NR_process_mrelease	(0x40000000 + 448)
++#define __NR_futex_waitv	(0x40000000 + 449)
++#define __NR_set_mempolicy_home_node	(0x40000000 + 450)
++#define __NR_cachestat		(0x40000000 + 451)
++#define __NR_fchmodat2		(0x40000000 + 452)
+ 
+ #define __NR_rt_sigaction (0x40000000 + 512)
+ #define __NR_rt_sigreturn (0x40000000 + 513)
+--- a/arch/x86_64/bits/syscall.h.in
++++ b/arch/x86_64/bits/syscall.h.in
+@@ -343,4 +343,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
diff --git a/srcpkgs/musl/template b/srcpkgs/musl/template
index 04e22c4fb01166..922d009ad8c36e 100644
--- a/srcpkgs/musl/template
+++ b/srcpkgs/musl/template
@@ -2,7 +2,7 @@
 pkgname=musl
 reverts="1.2.0_1"
 version=1.1.24
-revision=23
+revision=24
 archs="*-musl"
 bootstrap=yes
 build_style=gnu-configure

From dc9a4f0b43c28c635510cbcfa92a7f5c8735a80c Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Wed, 2 Apr 2025 01:29:40 +0200
Subject: [PATCH 2/2] kernel-libc-headers: update to 6.14.

---
 srcpkgs/kernel-libc-headers/template | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/kernel-libc-headers/template b/srcpkgs/kernel-libc-headers/template
index aa9b0fc20812f4..bc78720dca4481 100644
--- a/srcpkgs/kernel-libc-headers/template
+++ b/srcpkgs/kernel-libc-headers/template
@@ -1,14 +1,14 @@
 # Template file for 'kernel-libc-headers'
 pkgname=kernel-libc-headers
-version=6.1
+version=6.14
 revision=1
 bootstrap=yes
 short_desc="Linux API headers for userland development"
 maintainer="Érico Nogueira <ericonr@disroot.org>"
 license="GPL-2.0-only"
 homepage="http://www.kernel.org"
-distfiles="$KERNEL_SITE/kernel/v${version%%.*}.x/linux-${version}.tar.xz"
-checksum=2ca1f17051a430f6fed1196e4952717507171acfd97d96577212502703b25deb
+distfiles="${KERNEL_SITE}/kernel/v${version%%.*}.x/linux-${version}.tar.xz"
+checksum=a294b683e7b161bb0517bb32ec7ed1d2ea7603dfbabad135170ed12d00c47670
 
 if [ "$CHROOT_READY" ]; then
 	hostmakedepends="perl"
@@ -25,12 +25,11 @@ esac
 
 do_build() {
 	make mrproper
-	make ARCH=${_arch} headers
-	# remove extra files and drm headers
- 	find usr/include -name '.*' -delete
-	rm usr/include/Makefile
-	rm -rf usr/include/drm
+	make ARCH="${_arch}" headers
 }
+
 do_install() {
- 	vcopy usr/include usr
+	# the make header_install depends on rsync so just do the same thing manuall.
+	vcopy usr/include usr
+	find "${DESTDIR}/usr/include" -type f ! -name '*.h' -delete
 }

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: update kernel-libc-headers, backport syscall numbers and statx for musl
  2025-04-01 23:33 [PR PATCH] update kernel-libc-headers, backport syscall numbers and statx for musl Duncaen
@ 2025-04-02  7:57 ` oreo639
  2025-04-02 13:51 ` [PR PATCH] [Updated] " Duncaen
  2025-04-15 22:00 ` [PR PATCH] [Closed]: " Duncaen
  2 siblings, 0 replies; 4+ messages in thread
From: oreo639 @ 2025-04-02  7:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 261 bytes --]

New comment by oreo639 on void-packages repository

https://github.com/void-linux/void-packages/pull/54941#issuecomment-2771645033

Comment:
Probably makes sense to include https://github.com/bminor/musl/commit/55fb9a177316aa46c639d93dd0323d9a9a8c160c as well.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Updated] update kernel-libc-headers, backport syscall numbers and statx for musl
  2025-04-01 23:33 [PR PATCH] update kernel-libc-headers, backport syscall numbers and statx for musl Duncaen
  2025-04-02  7:57 ` oreo639
@ 2025-04-02 13:51 ` Duncaen
  2025-04-15 22:00 ` [PR PATCH] [Closed]: " Duncaen
  2 siblings, 0 replies; 4+ messages in thread
From: Duncaen @ 2025-04-02 13:51 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1032 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages new-syscalls
https://github.com/void-linux/void-packages/pull/54941

update kernel-libc-headers, backport syscall numbers and statx for musl
`statx` backport is easy and just applies, for the syscall numbers in `syscalls.h` I just copied over the new values instead of applying all the upstream patches in order since that would be +1k lines instead of just 300.

There is no reason to keep `kernel-libc-headers` on on old version and its generally suggested to use the latest available one, even if you target old kernels.

The musl changes are for two packages that I would like to update, first `ostree` hard depends on `statx(3)` and `firejail` depends on the landlock syscall numbers. Instead of just adding landlock numbers I decided its generally more useful to just ship all the syscall numbers.

A patch file from https://github.com/void-linux/void-packages/pull/54941.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-new-syscalls-54941.patch --]
[-- Type: text/x-diff, Size: 23773 bytes --]

From 307e25df8df8a6239f52c9a6d2e4d769b63accb5 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Wed, 2 Apr 2025 01:28:12 +0200
Subject: [PATCH 1/2] musl: backport syscall numbers and statx

---
 ...9a177316aa46c639d93dd0323d9a9a8c160c.patch |  45 +++
 srcpkgs/musl/patches/new-syscalls.patch       | 370 ++++++++++++++++++
 srcpkgs/musl/patches/statx.patch              | 201 ++++++++++
 srcpkgs/musl/template                         |   2 +-
 4 files changed, 617 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/musl/patches/55fb9a177316aa46c639d93dd0323d9a9a8c160c.patch
 create mode 100644 srcpkgs/musl/patches/new-syscalls.patch
 create mode 100644 srcpkgs/musl/patches/statx.patch

diff --git a/srcpkgs/musl/patches/55fb9a177316aa46c639d93dd0323d9a9a8c160c.patch b/srcpkgs/musl/patches/55fb9a177316aa46c639d93dd0323d9a9a8c160c.patch
new file mode 100644
index 00000000000000..4c1ea8f2b26884
--- /dev/null
+++ b/srcpkgs/musl/patches/55fb9a177316aa46c639d93dd0323d9a9a8c160c.patch
@@ -0,0 +1,45 @@
+From 55fb9a177316aa46c639d93dd0323d9a9a8c160c Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Wed, 9 Sep 2020 21:55:11 -0400
+Subject: [PATCH] use new SYS_faccessat2 syscall to implement faccessat with
+ flags
+
+commit 0a05eace163cee9b08571d2ff9d90f5e82d9c228 implemented AT_EACCESS
+for faccessat with a horrible hack, creating a child process to change
+switch uid/gid and perform the access probe without making potentially
+irreversible changes to the caller's credentials. this was due to the
+syscall lacking a flags argument.
+
+linux 5.8 introduced a new syscall, SYS_faccessat2, fixing this
+deficiency. use it if any flags are passed, and fallback to the old
+strategy on ENOSYS. continue using the old syscall when there are no
+flags.
+---
+ src/unistd/faccessat.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/unistd/faccessat.c b/src/unistd/faccessat.c
+index 76bbd4c72..557503eb6 100644
+--- a/src/unistd/faccessat.c
++++ b/src/unistd/faccessat.c
+@@ -25,12 +25,17 @@ static int checker(void *p)
+ 
+ int faccessat(int fd, const char *filename, int amode, int flag)
+ {
+-	if (!flag || (flag==AT_EACCESS && getuid()==geteuid() && getgid()==getegid()))
+-		return syscall(SYS_faccessat, fd, filename, amode, flag);
++	if (flag) {
++		int ret = __syscall(SYS_faccessat2, fd, filename, amode, flag);
++		if (ret != -ENOSYS) return __syscall_ret(ret);
++	}
+ 
+-	if (flag != AT_EACCESS)
++	if (flag & ~AT_EACCESS)
+ 		return __syscall_ret(-EINVAL);
+ 
++	if (!flag || (getuid()==geteuid() && getgid()==getegid()))
++		return syscall(SYS_faccessat, fd, filename, amode);
++
+ 	char stack[1024];
+ 	sigset_t set;
+ 	pid_t pid;
diff --git a/srcpkgs/musl/patches/new-syscalls.patch b/srcpkgs/musl/patches/new-syscalls.patch
new file mode 100644
index 00000000000000..6b2bdc20121966
--- /dev/null
+++ b/srcpkgs/musl/patches/new-syscalls.patch
@@ -0,0 +1,370 @@
+--- a/arch/aarch64/bits/syscall.h.in
++++ b/arch/aarch64/bits/syscall.h.in
+@@ -287,4 +287,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		4434
++#define __NR_clone3		4435
++#define __NR_close_range	4436
++#define __NR_openat2		4437
++#define __NR_pidfd_getfd	4438
++#define __NR_faccessat2		4439
++#define __NR_process_madvise	4440
++#define __NR_epoll_pwait2	4441
++#define __NR_mount_setattr	4442
++#define __NR_landlock_create_ruleset	4444
++#define __NR_landlock_add_rule	4445
++#define __NR_landlock_restrict_self	4446
++#define __NR_process_mrelease	4448
++#define __NR_futex_waitv	4449
++#define __NR_set_mempolicy_home_node	4450
++#define __NR_cachestat		4451
++#define __NR_fchmodat2		4452
+ 
+--- a/arch/arm/bits/syscall.h.in
++++ b/arch/arm/bits/syscall.h.in
+@@ -387,6 +387,23 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+ #define __ARM_NR_breakpoint	0x0f0001
+ #define __ARM_NR_cacheflush	0x0f0002
+--- a/arch/i386/bits/syscall.h.in
++++ b/arch/i386/bits/syscall.h.in
+@@ -424,4 +424,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/m68k/bits/syscall.h.in
++++ b/arch/m68k/bits/syscall.h.in
+@@ -404,3 +404,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
++
+--- a/arch/microblaze/bits/syscall.h.in
++++ b/arch/microblaze/bits/syscall.h.in
+@@ -425,4 +425,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/mips/bits/syscall.h.in
++++ b/arch/mips/bits/syscall.h.in
+@@ -406,4 +406,21 @@
+ #define __NR_fsconfig		4431
+ #define __NR_fsmount		4432
+ #define __NR_fspick		4433
++#define __NR_pidfd_open		4434
++#define __NR_clone3		4435
++#define __NR_close_range	4436
++#define __NR_openat2		4437
++#define __NR_pidfd_getfd	4438
++#define __NR_faccessat2		4439
++#define __NR_process_madvise	4440
++#define __NR_epoll_pwait2	4441
++#define __NR_mount_setattr	4442
++#define __NR_landlock_create_ruleset	4444
++#define __NR_landlock_add_rule	4445
++#define __NR_landlock_restrict_self	4446
++#define __NR_process_mrelease	4448
++#define __NR_futex_waitv	4449
++#define __NR_set_mempolicy_home_node	4450
++#define __NR_cachestat		4451
++#define __NR_fchmodat2		4452
+ 
+--- a/arch/mips64/bits/syscall.h.in
++++ b/arch/mips64/bits/syscall.h.in
+@@ -336,4 +336,21 @@
+ #define __NR_fsconfig		5431
+ #define __NR_fsmount		5432
+ #define __NR_fspick		5433
++#define __NR_pidfd_open		5434
++#define __NR_clone3		5435
++#define __NR_close_range	5436
++#define __NR_openat2		5437
++#define __NR_pidfd_getfd	5438
++#define __NR_faccessat2		5439
++#define __NR_process_madvise	5440
++#define __NR_epoll_pwait2	5441
++#define __NR_mount_setattr	5442
++#define __NR_landlock_create_ruleset	5444
++#define __NR_landlock_add_rule	5445
++#define __NR_landlock_restrict_self	5446
++#define __NR_process_mrelease	5448
++#define __NR_futex_waitv	5449
++#define __NR_set_mempolicy_home_node	5450
++#define __NR_cachestat		5451
++#define __NR_fchmodat2		5452
+ 
+--- a/arch/mipsn32/bits/syscall.h.in
++++ b/arch/mipsn32/bits/syscall.h.in
+@@ -360,4 +360,21 @@
+ #define __NR_fsconfig		6431
+ #define __NR_fsmount		6432
+ #define __NR_fspick		6433
++#define __NR_pidfd_open		6434
++#define __NR_clone3		6435
++#define __NR_close_range	6436
++#define __NR_openat2		6437
++#define __NR_pidfd_getfd	6438
++#define __NR_faccessat2		6439
++#define __NR_process_madvise	6440
++#define __NR_epoll_pwait2	6441
++#define __NR_mount_setattr	6442
++#define __NR_landlock_create_ruleset	6444
++#define __NR_landlock_add_rule	6445
++#define __NR_landlock_restrict_self	6446
++#define __NR_process_mrelease	6448
++#define __NR_futex_waitv	6449
++#define __NR_set_mempolicy_home_node	6450
++#define __NR_cachestat		6451
++#define __NR_fchmodat2		6452
+ 
+--- a/arch/or1k/bits/syscall.h.in
++++ b/arch/or1k/bits/syscall.h.in
+@@ -309,4 +309,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/powerpc/bits/syscall.h.in
++++ b/arch/powerpc/bits/syscall.h.in
+@@ -413,4 +413,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/riscv64/bits/syscall.h.in
++++ b/arch/riscv64/bits/syscall.h.in
+@@ -287,6 +287,23 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+ #define __NR_sysriscv __NR_arch_specific_syscall
+ #define __NR_riscv_flush_icache (__NR_sysriscv + 15)
+--- a/arch/s390x/bits/syscall.h.in
++++ b/arch/s390x/bits/syscall.h.in
+@@ -350,4 +350,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/sh/bits/syscall.h.in
++++ b/arch/sh/bits/syscall.h.in
+@@ -397,4 +397,21 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
+--- a/arch/x32/bits/syscall.h.in
++++ b/arch/x32/bits/syscall.h.in
+@@ -296,6 +296,24 @@
+ #define __NR_fsconfig		(0x40000000 + 431)
+ #define __NR_fsmount		(0x40000000 + 432)
+ #define __NR_fspick		(0x40000000 + 433)
++#define __NR_pidfd_open		(0x40000000 + 434)
++#define __NR_clone3		(0x40000000 + 435)
++#define __NR_close_range	(0x40000000 + 436)
++#define __NR_openat2		(0x40000000 + 437)
++#define __NR_pidfd_getfd	(0x40000000 + 438)
++#define __NR_faccessat2		(0x40000000 + 439)
++#define __NR_process_madvise	(0x40000000 + 440)
++#define __NR_epoll_pwait2	(0x40000000 + 441)
++#define __NR_mount_setattr	(0x40000000 + 442)
++#define __NR_landlock_create_ruleset	(0x40000000 + 444)
++#define __NR_landlock_add_rule	(0x40000000 + 445)
++#define __NR_landlock_restrict_self	(0x40000000 + 446)
++#define __NR_memfd_secret	(0x40000000 + 447)
++#define __NR_process_mrelease	(0x40000000 + 448)
++#define __NR_futex_waitv	(0x40000000 + 449)
++#define __NR_set_mempolicy_home_node	(0x40000000 + 450)
++#define __NR_cachestat		(0x40000000 + 451)
++#define __NR_fchmodat2		(0x40000000 + 452)
+ 
+ #define __NR_rt_sigaction (0x40000000 + 512)
+ #define __NR_rt_sigreturn (0x40000000 + 513)
+--- a/arch/x86_64/bits/syscall.h.in
++++ b/arch/x86_64/bits/syscall.h.in
+@@ -343,4 +343,22 @@
+ #define __NR_fsconfig		431
+ #define __NR_fsmount		432
+ #define __NR_fspick		433
++#define __NR_pidfd_open		434
++#define __NR_clone3		435
++#define __NR_close_range	436
++#define __NR_openat2		437
++#define __NR_pidfd_getfd	438
++#define __NR_faccessat2		439
++#define __NR_process_madvise	440
++#define __NR_epoll_pwait2	441
++#define __NR_mount_setattr	442
++#define __NR_landlock_create_ruleset	444
++#define __NR_landlock_add_rule	445
++#define __NR_landlock_restrict_self	446
++#define __NR_memfd_secret	447
++#define __NR_process_mrelease	448
++#define __NR_futex_waitv	449
++#define __NR_set_mempolicy_home_node	450
++#define __NR_cachestat		451
++#define __NR_fchmodat2		452
+ 
diff --git a/srcpkgs/musl/patches/statx.patch b/srcpkgs/musl/patches/statx.patch
new file mode 100644
index 00000000000000..7af4571b08b124
--- /dev/null
+++ b/srcpkgs/musl/patches/statx.patch
@@ -0,0 +1,201 @@
+From b817541f1cfd38e4b81257b3215e276ea9d0fc61 Mon Sep 17 00:00:00 2001
+From: Duncan Bellamy <dunk@denkimushi.com>
+Date: Wed, 31 Aug 2022 20:07:34 +0100
+Subject: [PATCH] add statx interface using syscall, fallback to fstatat
+
+---
+ include/sys/stat.h | 55 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/linux/statx.c  | 42 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 97 insertions(+)
+ create mode 100644 src/linux/statx.c
+
+diff --git a/include/sys/stat.h b/include/sys/stat.h
+index e6d0049c..6690192d 100644
+--- a/include/sys/stat.h
++++ b/include/sys/stat.h
+@@ -18,6 +18,13 @@ extern "C" {
+ #define __NEED_blkcnt_t
+ #define __NEED_struct_timespec
+ 
++#ifdef _GNU_SOURCE
++#define __NEED_int64_t
++#define __NEED_uint64_t
++#define __NEED_uint32_t
++#define __NEED_uint16_t
++#endif
++
+ #include <bits/alltypes.h>
+ 
+ #include <bits/stat.h>
+@@ -98,6 +105,54 @@ int lchmod(const char *, mode_t);
+ #define S_IEXEC S_IXUSR
+ #endif
+ 
++#if defined(_GNU_SOURCE)
++#define STATX_TYPE 1U
++#define STATX_MODE 2U
++#define STATX_NLINK 4U
++#define STATX_UID 8U
++#define STATX_GID 0x10U
++#define STATX_ATIME 0x20U
++#define STATX_MTIME 0x40U
++#define STATX_CTIME 0x80U
++#define STATX_INO 0x100U
++#define STATX_SIZE 0x200U
++#define STATX_BLOCKS 0x400U
++#define STATX_BASIC_STATS 0x7ffU
++#define STATX_BTIME 0x800U
++#define STATX_ALL 0xfffU
++
++struct statx_timestamp {
++	int64_t tv_sec;
++	uint32_t tv_nsec, __pad;
++};
++
++struct statx {
++	uint32_t stx_mask;
++	uint32_t stx_blksize;
++	uint64_t stx_attributes;
++	uint32_t stx_nlink;
++	uint32_t stx_uid;
++	uint32_t stx_gid;
++	uint16_t stx_mode;
++	uint16_t __pad0[1];
++	uint64_t stx_ino;
++	uint64_t stx_size;
++	uint64_t stx_blocks;
++	uint64_t stx_attributes_mask;
++	struct statx_timestamp stx_atime;
++	struct statx_timestamp stx_btime;
++	struct statx_timestamp stx_ctime;
++	struct statx_timestamp stx_mtime;
++	uint32_t stx_rdev_major;
++	uint32_t stx_rdev_minor;
++	uint32_t stx_dev_major;
++	uint32_t stx_dev_minor;
++	uint64_t __pad1[14];
++};
++
++int statx(int, const char *__restrict, int, unsigned, struct statx *__restrict);
++#endif
++
+ #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+ #define stat64 stat
+ #define fstat64 fstat
+diff --git a/src/linux/statx.c b/src/linux/statx.c
+new file mode 100644
+index 00000000..4616bff4
+--- /dev/null
++++ b/src/linux/statx.c
+@@ -0,0 +1,42 @@
++#define _GNU_SOURCE
++#include <sys/stat.h>
++#include <string.h>
++#include <syscall.h>
++#include <sys/sysmacros.h>
++#include <errno.h>
++
++int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct statx *restrict stx)
++{
++	int ret = __syscall(SYS_statx, dirfd, path, flags, mask, stx);
++
++#ifndef SYS_fstatat
++	return __syscall_ret(ret);
++#endif
++
++	if (ret != -ENOSYS) return __syscall_ret(ret);
++
++	struct stat st;
++	ret = fstatat(dirfd, path, &st, flags);
++	if (ret) return ret;
++
++	stx->stx_dev_major = major(st.st_dev);
++	stx->stx_dev_minor = minor(st.st_dev);
++	stx->stx_ino = st.st_ino;
++	stx->stx_mode = st.st_mode;
++	stx->stx_nlink = st.st_nlink;
++	stx->stx_uid = st.st_uid;
++	stx->stx_gid = st.st_gid;
++	stx->stx_size = st.st_size;
++	stx->stx_blksize = st.st_blksize;
++	stx->stx_blocks = st.st_blocks;
++	stx->stx_atime.tv_sec = st.st_atim.tv_sec;
++	stx->stx_atime.tv_nsec = st.st_atim.tv_nsec;
++	stx->stx_mtime.tv_sec = st.st_mtim.tv_sec;
++	stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec;
++	stx->stx_ctime.tv_sec = st.st_ctim.tv_sec;
++	stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec;
++	stx->stx_btime = (struct statx_timestamp){.tv_sec=0, .tv_nsec=0};
++	stx->stx_mask = STATX_BASIC_STATS;
++
++	return 0;
++}
+
+From 251cbb6366403a056b39638264932c82d18ec610 Mon Sep 17 00:00:00 2001
+From: Gabriel Ravier <gabravier@gmail.com>
+Date: Fri, 13 Sep 2024 22:00:15 +0200
+Subject: [PATCH] statx: fix ENOSYS emulation not setting stx_rdev_*
+
+The current implementation of the statx function fails to set the
+values of stx->stx_rdev_major and stx->stx_rdev_minor if the statx
+syscall fails with ENOSYS and thus the statx function has to fall back
+on fstatat-based emulation.
+---
+ src/linux/statx.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/linux/statx.c b/src/linux/statx.c
+index 4616bff4a..5f6dde923 100644
+--- a/src/linux/statx.c
++++ b/src/linux/statx.c
+@@ -21,6 +21,8 @@ int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct
+ 
+ 	stx->stx_dev_major = major(st.st_dev);
+ 	stx->stx_dev_minor = minor(st.st_dev);
++	stx->stx_rdev_major = major(st.st_rdev);
++	stx->stx_rdev_minor = minor(st.st_rdev);
+ 	stx->stx_ino = st.st_ino;
+ 	stx->stx_mode = st.st_mode;
+ 	stx->stx_nlink = st.st_nlink;
+
+From 4ca8c267768e371930ef7ec9593a5f8b44a7f810 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Fri, 13 Sep 2024 17:08:11 -0400
+Subject: [PATCH] statx: fix uninitialized attributes/mask in fallback path
+
+commit b817541f1cfd38e4b81257b3215e276ea9d0fc61 introduced statx with
+a fallback using fstatat, but failed to fill in stx_rdev_major/minor
+and stx_attributes[_mask]. the rdev omission has been addressed
+separately. rather than explicitly zeroing the attributes and their
+mask, pre-fill the entire structure with zeros. this will also cover
+the padding adjacent to stx_mode, in case it's ever used in the
+future.
+
+explicit zeroing of stx_btime is removed since, with this change, it
+will already be pre-zeroed. as an aside, zeroing it was not strictly
+necessary, since STATX_BASIC_STATS does not include STATX_BTIME and
+thus does not indicate any validity for it.
+---
+ src/linux/statx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/linux/statx.c b/src/linux/statx.c
+index 5f6dde92..4fb96e4b 100644
+--- a/src/linux/statx.c
++++ b/src/linux/statx.c
+@@ -19,6 +19,7 @@ int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct
+ 	ret = fstatat(dirfd, path, &st, flags);
+ 	if (ret) return ret;
+ 
++	*stx = (struct statx){0};
+ 	stx->stx_dev_major = major(st.st_dev);
+ 	stx->stx_dev_minor = minor(st.st_dev);
+ 	stx->stx_rdev_major = major(st.st_rdev);
+@@ -37,7 +38,6 @@ int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct
+ 	stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec;
+ 	stx->stx_ctime.tv_sec = st.st_ctim.tv_sec;
+ 	stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec;
+-	stx->stx_btime = (struct statx_timestamp){.tv_sec=0, .tv_nsec=0};
+ 	stx->stx_mask = STATX_BASIC_STATS;
+ 
+ 	return 0;
diff --git a/srcpkgs/musl/template b/srcpkgs/musl/template
index 04e22c4fb01166..922d009ad8c36e 100644
--- a/srcpkgs/musl/template
+++ b/srcpkgs/musl/template
@@ -2,7 +2,7 @@
 pkgname=musl
 reverts="1.2.0_1"
 version=1.1.24
-revision=23
+revision=24
 archs="*-musl"
 bootstrap=yes
 build_style=gnu-configure

From 6d65eb344e2f1e9ee6fae1252d3b7ae3c0e08b36 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Wed, 2 Apr 2025 01:29:40 +0200
Subject: [PATCH 2/2] kernel-libc-headers: update to 6.14.

---
 srcpkgs/kernel-libc-headers/template | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/kernel-libc-headers/template b/srcpkgs/kernel-libc-headers/template
index aa9b0fc20812f4..bc78720dca4481 100644
--- a/srcpkgs/kernel-libc-headers/template
+++ b/srcpkgs/kernel-libc-headers/template
@@ -1,14 +1,14 @@
 # Template file for 'kernel-libc-headers'
 pkgname=kernel-libc-headers
-version=6.1
+version=6.14
 revision=1
 bootstrap=yes
 short_desc="Linux API headers for userland development"
 maintainer="Érico Nogueira <ericonr@disroot.org>"
 license="GPL-2.0-only"
 homepage="http://www.kernel.org"
-distfiles="$KERNEL_SITE/kernel/v${version%%.*}.x/linux-${version}.tar.xz"
-checksum=2ca1f17051a430f6fed1196e4952717507171acfd97d96577212502703b25deb
+distfiles="${KERNEL_SITE}/kernel/v${version%%.*}.x/linux-${version}.tar.xz"
+checksum=a294b683e7b161bb0517bb32ec7ed1d2ea7603dfbabad135170ed12d00c47670
 
 if [ "$CHROOT_READY" ]; then
 	hostmakedepends="perl"
@@ -25,12 +25,11 @@ esac
 
 do_build() {
 	make mrproper
-	make ARCH=${_arch} headers
-	# remove extra files and drm headers
- 	find usr/include -name '.*' -delete
-	rm usr/include/Makefile
-	rm -rf usr/include/drm
+	make ARCH="${_arch}" headers
 }
+
 do_install() {
- 	vcopy usr/include usr
+	# the make header_install depends on rsync so just do the same thing manuall.
+	vcopy usr/include usr
+	find "${DESTDIR}/usr/include" -type f ! -name '*.h' -delete
 }

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Closed]: update kernel-libc-headers, backport syscall numbers and statx for musl
  2025-04-01 23:33 [PR PATCH] update kernel-libc-headers, backport syscall numbers and statx for musl Duncaen
  2025-04-02  7:57 ` oreo639
  2025-04-02 13:51 ` [PR PATCH] [Updated] " Duncaen
@ 2025-04-15 22:00 ` Duncaen
  2 siblings, 0 replies; 4+ messages in thread
From: Duncaen @ 2025-04-15 22:00 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 871 bytes --]

There's a closed pull request on the void-packages repository

update kernel-libc-headers, backport syscall numbers and statx for musl
https://github.com/void-linux/void-packages/pull/54941

Description:
`statx` backport is easy and just applies, for the syscall numbers in `syscalls.h` I just copied over the new values instead of applying all the upstream patches in order since that would be +1k lines instead of just 300.

There is no reason to keep `kernel-libc-headers` on on old version and its generally suggested to use the latest available one, even if you target old kernels.

The musl changes are for two packages that I would like to update, first `ostree` hard depends on `statx(3)` and `firejail` depends on the landlock syscall numbers. Instead of just adding landlock numbers I decided its generally more useful to just ship all the syscall numbers.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-04-15 22:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-01 23:33 [PR PATCH] update kernel-libc-headers, backport syscall numbers and statx for musl Duncaen
2025-04-02  7:57 ` oreo639
2025-04-02 13:51 ` [PR PATCH] [Updated] " Duncaen
2025-04-15 22:00 ` [PR PATCH] [Closed]: " Duncaen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).