aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/package
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/package')
-rw-r--r--internal/rosa/package/elfutils/64e89606ff4967a647525524aec00dd33765ba2a.patch71
-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" +