diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-08-29 17:53:02 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-08-29 17:53:02 +0900 |
| commit | 418d24936f73f3d9108133a325f1c1a479b37e09 (patch) | |
| tree | e82f0c29fa03b63f755e9c85c2ae5469c6dc9dca /internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch | |
| parent | 16bc1033bee1ce315442fbdd588c7cd3c13d82be (diff) | |
internal/rosa/package/elfutils: 0.195 to 0.196
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch')
| -rw-r--r-- | internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch b/internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch new file mode 100644 index 00000000..e7b534f1 --- /dev/null +++ b/internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch @@ -0,0 +1,71 @@ +From 64e89606ff4967a647525524aec00dd33765ba2a Mon Sep 17 00:00:00 2001 +From: Daeho Ro <email@daeho.ro> +Date: Sun, 16 Aug 2026 16:27:56 +0900 +Subject: [PATCH] backends: use <sys/uio.h> instead of <linux/uio.h> for struct + iovec + +Since commit 0e8b57a3 ("elfcompress: Handle existing output files +(symlinks)") lib/system.h includes <fcntl.h>. When _GNU_SOURCE is +defined, glibc's <fcntl.h> pulls in <bits/types/struct_iovec.h> (via +bits/fcntl-linux.h), which defines struct iovec. The kernel UAPI header +<linux/uio.h> defines struct iovec unconditionally, so including it +after "system.h" now breaks the aarch64 backend build: + + In file included from aarch64_initreg.c:36: + /usr/include/linux/uio.h:17:8: error: redefinition of 'struct iovec' + 17 | struct iovec + | ^~~~~ + In file included from /usr/include/aarch64-linux-gnu/bits/fcntl-linux.h:38, + from /usr/include/aarch64-linux-gnu/bits/fcntl.h:61, + from /usr/include/fcntl.h:35, + from ../lib/system.h:42, + from aarch64_initreg.c:33: + /usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h:26:8: note: originally defined here + +Seen building 0.196 on aarch64 with glibc 2.39 and gcc 13.3.0. + +Both files only need struct iovec to call ptrace (PTRACE_GETREGSET), +which glibc provides in <sys/uio.h>; that header guards the definition +with __iovec_defined, so it composes with the rest of system.h. +arm_initreg.c does not currently include "system.h" and so still builds, +but it has the same latent conflict. + +* backends/aarch64_initreg.c: Include <sys/uio.h> instead of + <linux/uio.h>. +* backends/arm_initreg.c: Likewise. + +Signed-off-by: Daeho Ro <email@daeho.ro> +--- + backends/aarch64_initreg.c | 2 +- + backends/arm_initreg.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/backends/aarch64_initreg.c b/backends/aarch64_initreg.c +index a6badbb4..539a6366 100644 +--- a/backends/aarch64_initreg.c ++++ b/backends/aarch64_initreg.c +@@ -33,7 +33,7 @@ + #include "system.h" + #include <assert.h> + #if defined(__aarch64__) && defined(__linux__) +-# include <linux/uio.h> ++# include <sys/uio.h> + # include <sys/user.h> + # include <sys/ptrace.h> + # include <asm/ptrace.h> +diff --git a/backends/arm_initreg.c b/backends/arm_initreg.c +index efcabaf6..062bb9e0 100644 +--- a/backends/arm_initreg.c ++++ b/backends/arm_initreg.c +@@ -38,7 +38,7 @@ + #endif + + #ifdef __aarch64__ +-# include <linux/uio.h> ++# include <sys/uio.h> + # include <sys/user.h> + # include <sys/ptrace.h> + /* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */ +-- +2.55.0 + |
