diff options
| -rw-r--r-- | internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch | 71 | ||||
| -rw-r--r-- | internal/rosa/package/elfutils/package.az (renamed from internal/rosa/package/elfutils.az) | 5 |
2 files changed, 74 insertions, 2 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 + diff --git a/internal/rosa/package/elfutils.az b/internal/rosa/package/elfutils/package.az index 42cc1c56..89db25ff 100644 --- a/internal/rosa/package/elfutils.az +++ b/internal/rosa/package/elfutils/package.az @@ -3,13 +3,14 @@ package elfutils { website = "https://sourceware.org/elfutils"; anitya = 5679; - version# = "0.195"; + version# = "0.196"; source = remoteTar { url = "https://sourceware.org/elfutils/ftp/"+ version+"/elfutils-"+version+".tar.bz2"; - checksum = "JrGnBD38w8Mj0ZxDw3fKlRBFcLvRKu8rcYnX35R9yTlUSYnzTazyLboG-a2CsJlu"; + checksum = "TzY1z0jDRofYNxhEsElwgzSKWUy2Hb6RSzm_8ni-peGKmZWLJUqefZItJtw-ZvHj"; compress = bzip2; }; + patches = [ "64e89606ff4967a647525524aec00dd33765ba2a.patch" ]; env = [ "CC=cc" + |
