summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Bauer2025-12-05 18:50:22 +0000
committerDavid Bauer2025-12-06 00:49:16 +0000
commit00c8b5c612d07e36ede1e9ebe2b44ba88fa90000 (patch)
tree3bc015a1db03deaff6e0f026469c9c1c54f2862c
parent09e7b24ceb5d9310334c4f88327dc6d58052e7fd (diff)
downloadopenwrt-00c8b5c612d07e36ede1e9ebe2b44ba88fa90000.tar.gz
libunwind: fix complie for PPC32
libunwind fails to compile because the include for the WORDSIZE definition was missing when compiling with musl libc. This lead to unw_word_t being defined as 64 bit long instead of the correct 32 bit. Signed-off-by: David Bauer <mail@david-bauer.net>
-rw-r--r--package/libs/libunwind/Makefile2
-rw-r--r--package/libs/libunwind/patches/004-ppc-musl.patch26
2 files changed, 25 insertions, 3 deletions
diff --git a/package/libs/libunwind/Makefile b/package/libs/libunwind/Makefile
index f2363116fc..2ed8988acd 100644
--- a/package/libs/libunwind/Makefile
+++ b/package/libs/libunwind/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libunwind
PKG_VERSION:=1.8.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/libunwind/libunwind/releases/download/v$(PKG_VERSION)/
diff --git a/package/libs/libunwind/patches/004-ppc-musl.patch b/package/libs/libunwind/patches/004-ppc-musl.patch
index 5ea79e1462..22b803b785 100644
--- a/package/libs/libunwind/patches/004-ppc-musl.patch
+++ b/package/libs/libunwind/patches/004-ppc-musl.patch
@@ -1,6 +1,17 @@
--- a/include/libunwind-ppc32.h
+++ b/include/libunwind-ppc32.h
-@@ -81,6 +81,88 @@ typedef int64_t unw_sword_t;
+@@ -40,6 +40,10 @@ extern "C" {
+ #include <stdint.h>
+ #include <ucontext.h>
+
++#ifndef __GLIBC__
++#include <bits/reg.h>
++#endif
++
+ #ifndef UNW_EMPTY_STRUCT
+ # define UNW_EMPTY_STRUCT uint8_t unused;
+ #endif
+@@ -81,6 +85,88 @@ typedef int64_t unw_sword_t;
typedef long double unw_tdep_fpreg_t;
@@ -91,7 +102,18 @@
UNW_PPC32_R0,
--- a/include/libunwind-ppc64.h
+++ b/include/libunwind-ppc64.h
-@@ -88,6 +88,88 @@ typedef struct {
+@@ -40,6 +40,10 @@ extern "C" {
+ #include <stdint.h>
+ #include <ucontext.h>
+
++#ifndef __GLIBC__
++#include <bits/reg.h>
++#endif
++
+ #ifndef UNW_EMPTY_STRUCT
+ # define UNW_EMPTY_STRUCT uint8_t unused;
+ #endif
+@@ -88,6 +92,88 @@ typedef struct {
uint64_t halves[2];
} unw_tdep_vreg_t;