summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorWang Mingyu <wangmy@fujitsu.com>2025-06-04 16:45:04 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-06-05 11:02:23 +0100
commit1f51eca39c30dec253f7a5e26626dc8560852f9b (patch)
tree61f1e4cfe9556c0679f3639bffc6c6eb98cff22f /meta
parent4d4c7852d010bbefccf67a402f7e43fdcf64e9e0 (diff)
downloadpoky-1f51eca39c30dec253f7a5e26626dc8560852f9b.tar.gz
libunwind: upgrade 1.8.1 -> 1.8.2
0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch 0004-Rework-inline-aarch64-as-for-setcontext.patch removed since they're included in 1.8.2 libatomic.patch malloc.patch refreshed for 1.8.2 (From OE-Core rev: 02c3d8de66fa1342d729a17654b0ac14e07b8860) Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch27
-rw-r--r--meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch163
-rw-r--r--meta/recipes-support/libunwind/libunwind/libatomic.patch6
-rw-r--r--meta/recipes-support/libunwind/libunwind/malloc.patch10
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.8.2.bb (renamed from meta/recipes-support/libunwind/libunwind_1.8.1.bb)4
5 files changed, 9 insertions, 201 deletions
diff --git a/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch b/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch
deleted file mode 100644
index 19bdd858f7..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From e5216c3fb1fa8d60a18c68e4749a3ff902f6678b Mon Sep 17 00:00:00 2001
2From: Ian Zborovsky <ian@veego.io>
3Date: Mon, 6 May 2024 02:01:19 +0300
4Subject: [PATCH 3/4] Fixed miscompilation of unw_getcontext() on ARM
5
6Upstream-Status: Backport
7Signed-off-by: Ross Burton <ross.burton@arm.com>
8---
9 include/libunwind-arm.h | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/include/libunwind-arm.h b/include/libunwind-arm.h
13index 6cfa577d..6643a185 100644
14--- a/include/libunwind-arm.h
15+++ b/include/libunwind-arm.h
16@@ -288,7 +288,7 @@ unw_tdep_context_t;
17 "mov r0, #0\n\t" \
18 "stmia %[base]!, {r0-r15}\n\t" \
19 VSTMIA \
20- : [r0] "=r" (r0) : [base] "r" (unw_base) : "memory"); \
21+ : [r0] "=r" (r0), [base] "+r" (unw_base) : : "memory"); \
22 (int)r0; })
23 #else /* __thumb__ */
24 #define unw_tdep_getcontext(uc) ({ \
25--
262.34.1
27
diff --git a/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch b/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch
deleted file mode 100644
index 005a077028..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch
+++ /dev/null
@@ -1,163 +0,0 @@
1From a832070f3665d29a8a06652c15f94d144c24ac69 Mon Sep 17 00:00:00 2001
2From: Stephen Webb <swebb@blackberry.com>
3Date: Mon, 22 Apr 2024 15:56:54 -0400
4Subject: [PATCH 4/5] Rework inline aarch64 as for setcontext
5
6Modern GC and clang were barfing on the inline asm constraints for the
7aarch64-linux setcontext() replacement. Reformulated the asm code to
8reduce the required constraints.
9
10Upstream-Status: Backport
11Signed-off-by: Ross Burton <ross.burton@arm.com>
12---
13 src/aarch64/Gos-linux.c | 115 +++++++++++++++++++++-------------------
14 1 file changed, 61 insertions(+), 54 deletions(-)
15
16diff --git a/src/aarch64/Gos-linux.c b/src/aarch64/Gos-linux.c
17index 7cd8c879..1e494962 100644
18--- a/src/aarch64/Gos-linux.c
19+++ b/src/aarch64/Gos-linux.c
20@@ -2,6 +2,7 @@
21 Copyright (C) 2008 CodeSourcery
22 Copyright (C) 2011-2013 Linaro Limited
23 Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
24+ Copyright 2024 Stephen M. Webb <swebb@blackberry.com>
25
26 This file is part of libunwind.
27
28@@ -28,6 +29,28 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29
30 #ifndef UNW_REMOTE_ONLY
31
32+/* Magic constants generated from gen-offsets.c */
33+#define SC_R0_OFF "8"
34+#define SC_R2_OFF "24"
35+#define SC_R18_OFF "152"
36+#define SC_R20_OFF "168"
37+#define SC_R22_OFF "184"
38+#define SC_R24_OFF "200"
39+#define SC_R26_OFF "216"
40+#define SC_R28_OFF "232"
41+#define SC_R30_OFF "248"
42+
43+#define FP_R08_OFF "80"
44+#define FP_R09_OFF "88"
45+#define FP_R10_OFF "96"
46+#define FP_R11_OFF "104"
47+#define FP_R12_OFF "112"
48+#define FP_R13_OFF "120"
49+#define FP_R14_OFF "128"
50+#define FP_R15_OFF "136"
51+
52+#define SC_SP_OFF "0x100"
53+
54 HIDDEN int
55 aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
56 {
57@@ -36,65 +59,49 @@ aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
58
59 if (c->sigcontext_format == AARCH64_SCF_NONE)
60 {
61+
62+ /*
63+ * This is effectively the old POSIX setcontext().
64+ *
65+ * This inline asm is broken up to use local scratch registers for the
66+ * uc_mcontext.regs and FPCTX base addresses because newer versions of GCC
67+ * and clang barf on too many constraints (gh-702) when the C array
68+ * elements are used directly.
69+ *
70+ * Clobbers aren't required for the inline asm because they just convince
71+ * the compiler to save those registers and they never get restored
72+ * becauise the asm ends with a plain ol' ret.
73+ */
74+ register void* uc_mcontext __asm__ ("x5") = (void*) &uc->uc_mcontext;
75+ register void* fpctx __asm__ ("x4") = (void*) GET_FPCTX(uc);
76+
77 /* Since there are no signals involved here we restore EH and non scratch
78 registers only. */
79 __asm__ __volatile__ (
80- "ldr x0, %[x0]\n\t"
81- "ldr x1, %[x1]\n\t"
82- "ldr x2, %[x2]\n\t"
83- "ldr x3, %[x3]\n\t"
84- "ldr x19, %[x19]\n\t"
85- "ldr x20, %[x20]\n\t"
86- "ldr x21, %[x21]\n\t"
87- "ldr x22, %[x22]\n\t"
88- "ldr x23, %[x23]\n\t"
89- "ldr x24, %[x24]\n\t"
90- "ldr x25, %[x25]\n\t"
91- "ldr x26, %[x26]\n\t"
92- "ldr x27, %[x27]\n\t"
93- "ldr x28, %[x28]\n\t"
94- "ldr x29, %[x29]\n\t"
95- "ldr x30, %[x30]\n\t"
96- "ldr d8, %[d8]\n\t"
97- "ldr d9, %[d9]\n\t"
98- "ldr d10, %[d10]\n\t"
99- "ldr d11, %[d11]\n\t"
100- "ldr d12, %[d12]\n\t"
101- "ldr d13, %[d13]\n\t"
102- "ldr d14, %[d14]\n\t"
103- "ldr d15, %[d15]\n\t"
104- "ldr x5, %[sp]\n\t"
105+ "ldp x0, x1, [x5, " SC_R0_OFF "]\n\t"
106+ "ldp x2, x3, [x5, " SC_R2_OFF "]\n\t"
107+ "ldp x18, x19, [x5, " SC_R18_OFF "]\n\t"
108+ "ldp x20, x21, [x5, " SC_R20_OFF "]\n\t"
109+ "ldp x22, x23, [x5, " SC_R22_OFF "]\n\t"
110+ "ldp x24, x25, [x5, " SC_R24_OFF "]\n\t"
111+ "ldp x26, x27, [x5, " SC_R26_OFF "]\n\t"
112+ "ldp x28, x29, [x5, " SC_R28_OFF "]\n\t"
113+ "ldr x30, [x5, " SC_R30_OFF "]\n\t"
114+ "ldr d8, [x4, " FP_R08_OFF "]\n\t"
115+ "ldr d9, [x4, " FP_R09_OFF "]\n\t"
116+ "ldr d10, [x4, " FP_R10_OFF "]\n\t"
117+ "ldr d11, [x4, " FP_R11_OFF "]\n\t"
118+ "ldr d12, [x4, " FP_R12_OFF "]\n\t"
119+ "ldr d13, [x4, " FP_R13_OFF "]\n\t"
120+ "ldr d14, [x4, " FP_R14_OFF "]\n\t"
121+ "ldr d15, [x4, " FP_R15_OFF "]\n\t"
122+ "ldr x5, [x5, " SC_SP_OFF "]\n\t"
123 "mov sp, x5\n\t"
124 "ret\n"
125- :
126- : [x0] "m"(uc->uc_mcontext.regs[0]),
127- [x1] "m"(uc->uc_mcontext.regs[1]),
128- [x2] "m"(uc->uc_mcontext.regs[2]),
129- [x3] "m"(uc->uc_mcontext.regs[3]),
130- [x19] "m"(uc->uc_mcontext.regs[19]),
131- [x20] "m"(uc->uc_mcontext.regs[20]),
132- [x21] "m"(uc->uc_mcontext.regs[21]),
133- [x22] "m"(uc->uc_mcontext.regs[22]),
134- [x23] "m"(uc->uc_mcontext.regs[23]),
135- [x24] "m"(uc->uc_mcontext.regs[24]),
136- [x25] "m"(uc->uc_mcontext.regs[25]),
137- [x26] "m"(uc->uc_mcontext.regs[26]),
138- [x27] "m"(uc->uc_mcontext.regs[27]),
139- [x28] "m"(uc->uc_mcontext.regs[28]),
140- [x29] "m"(uc->uc_mcontext.regs[29]), /* FP */
141- [x30] "m"(uc->uc_mcontext.regs[30]), /* LR */
142- [d8] "m"(GET_FPCTX(uc)->vregs[8]),
143- [d9] "m"(GET_FPCTX(uc)->vregs[9]),
144- [d10] "m"(GET_FPCTX(uc)->vregs[10]),
145- [d11] "m"(GET_FPCTX(uc)->vregs[11]),
146- [d12] "m"(GET_FPCTX(uc)->vregs[12]),
147- [d13] "m"(GET_FPCTX(uc)->vregs[13]),
148- [d14] "m"(GET_FPCTX(uc)->vregs[14]),
149- [d15] "m"(GET_FPCTX(uc)->vregs[15]),
150- [sp] "m"(uc->uc_mcontext.sp)
151- : "x0", "x1", "x2", "x3", "x19", "x20", "x21", "x22", "x23", "x24",
152- "x25", "x26", "x27", "x28", "x29", "x30"
153- );
154+ :
155+ : [uc_mcontext] "r"(uc_mcontext),
156+ [fpctx] "r"(fpctx)
157+ );
158 }
159 else
160 {
161--
1622.34.1
163
diff --git a/meta/recipes-support/libunwind/libunwind/libatomic.patch b/meta/recipes-support/libunwind/libunwind/libatomic.patch
index f39e92f2ee..e783128e2c 100644
--- a/meta/recipes-support/libunwind/libunwind/libatomic.patch
+++ b/meta/recipes-support/libunwind/libunwind/libatomic.patch
@@ -1,4 +1,4 @@
1From d6a0d8ce07c761e51b9dc7c5d16a9b06c3e93560 Mon Sep 17 00:00:00 2001 1From a331e3a63981427724d2d9cfdcb4a456153299b5 Mon Sep 17 00:00:00 2001
2From: Stephen Webb <swebb@blackberry.com> 2From: Stephen Webb <swebb@blackberry.com>
3Date: Mon, 18 Mar 2024 10:22:26 -0400 3Date: Mon, 18 Mar 2024 10:22:26 -0400
4Subject: [PATCH] configure.ac: detect if -latomic is required 4Subject: [PATCH] configure.ac: detect if -latomic is required
@@ -14,10 +14,10 @@ Signed-off-by: Ross Burton <ross.burton@arm.com>
14 1 file changed, 12 insertions(+) 14 1 file changed, 12 insertions(+)
15 15
16diff --git a/configure.ac b/configure.ac 16diff --git a/configure.ac b/configure.ac
17index 758a27d19..d0ef5f3d9 100644 17index eaa0ddc..d5f1d4a 100644
18--- a/configure.ac 18--- a/configure.ac
19+++ b/configure.ac 19+++ b/configure.ac
20@@ -94,6 +94,18 @@ dnl Checks for library functions. 20@@ -93,6 +93,18 @@ dnl Checks for library functions.
21 AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ 21 AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \
22 ttrace mincore pipe2 sigaltstack execvpe) 22 ttrace mincore pipe2 sigaltstack execvpe)
23 23
diff --git a/meta/recipes-support/libunwind/libunwind/malloc.patch b/meta/recipes-support/libunwind/libunwind/malloc.patch
index 026a56f155..cfcef1ccdc 100644
--- a/meta/recipes-support/libunwind/libunwind/malloc.patch
+++ b/meta/recipes-support/libunwind/libunwind/malloc.patch
@@ -1,4 +1,4 @@
1From b67d508a93bf1ba231c18dce3894cfee25c16e0d Mon Sep 17 00:00:00 2001 1From 8fd3e0c24fdfed64e0642ec0334548f16a2a9390 Mon Sep 17 00:00:00 2001
2From: Stephen Webb <swebb@blackberry.com> 2From: Stephen Webb <swebb@blackberry.com>
3Date: Wed, 12 Feb 2025 12:08:07 -0500 3Date: Wed, 12 Feb 2025 12:08:07 -0500
4Subject: [PATCH] Fix bad prototype for malloc() in test 4Subject: [PATCH] Fix bad prototype for malloc() in test
@@ -23,7 +23,7 @@ Signed-off-by: Ross Burton <ross.burton@arm.com>
23 create mode 100644 tests/unw_test.h 23 create mode 100644 tests/unw_test.h
24 24
25diff --git a/tests/Gtest-nomalloc.c b/tests/Gtest-nomalloc.c 25diff --git a/tests/Gtest-nomalloc.c b/tests/Gtest-nomalloc.c
26index 5b97fc709..e770ff614 100644 26index 5b97fc7..e770ff6 100644
27--- a/tests/Gtest-nomalloc.c 27--- a/tests/Gtest-nomalloc.c
28+++ b/tests/Gtest-nomalloc.c 28+++ b/tests/Gtest-nomalloc.c
29@@ -1,78 +1,92 @@ 29@@ -1,78 +1,92 @@
@@ -188,10 +188,10 @@ index 5b97fc709..e770ff614 100644
188+ exit (UNW_TEST_EXIT_PASS); 188+ exit (UNW_TEST_EXIT_PASS);
189 } 189 }
190diff --git a/tests/Makefile.am b/tests/Makefile.am 190diff --git a/tests/Makefile.am b/tests/Makefile.am
191index adc34ac63..60f3f3adc 100644 191index e2b07bc..844105a 100644
192--- a/tests/Makefile.am 192--- a/tests/Makefile.am
193+++ b/tests/Makefile.am 193+++ b/tests/Makefile.am
194@@ -214,7 +214,7 @@ endif 194@@ -200,7 +200,7 @@ endif
195 195
196 noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ 196 noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \
197 $(noinst_PROGRAMS_arch) 197 $(noinst_PROGRAMS_arch)
@@ -202,7 +202,7 @@ index adc34ac63..60f3f3adc 100644
202 -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \ 202 -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \
203diff --git a/tests/unw_test.h b/tests/unw_test.h 203diff --git a/tests/unw_test.h b/tests/unw_test.h
204new file mode 100644 204new file mode 100644
205index 000000000..9ae86dce1 205index 0000000..9ae86dc
206--- /dev/null 206--- /dev/null
207+++ b/tests/unw_test.h 207+++ b/tests/unw_test.h
208@@ -0,0 +1,47 @@ 208@@ -0,0 +1,47 @@
diff --git a/meta/recipes-support/libunwind/libunwind_1.8.1.bb b/meta/recipes-support/libunwind/libunwind_1.8.2.bb
index 10714ea247..6f7168b5df 100644
--- a/meta/recipes-support/libunwind/libunwind_1.8.1.bb
+++ b/meta/recipes-support/libunwind/libunwind_1.8.2.bb
@@ -10,14 +10,12 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \
10 file://mips-byte-order.patch \ 10 file://mips-byte-order.patch \
11 file://0001-tests-Garm64-test-sve-signal-check-that-SVE-is-prese.patch \ 11 file://0001-tests-Garm64-test-sve-signal-check-that-SVE-is-prese.patch \
12 file://0002-coredump-use-glibc-or-musl-register-names-as-appropr.patch \ 12 file://0002-coredump-use-glibc-or-musl-register-names-as-appropr.patch \
13 file://0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch \
14 file://0004-Rework-inline-aarch64-as-for-setcontext.patch \
15 file://0005-Handle-musl-on-PPC32.patch \ 13 file://0005-Handle-musl-on-PPC32.patch \
16 file://libatomic.patch \ 14 file://libatomic.patch \
17 file://malloc.patch \ 15 file://malloc.patch \
18 " 16 "
19 17
20SRC_URI[sha256sum] = "ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157" 18SRC_URI[sha256sum] = "7f262f1a1224f437ede0f96a6932b582c8f5421ff207c04e3d9504dfa04c8b82"
21 19
22inherit autotools multilib_header github-releases 20inherit autotools multilib_header github-releases
23 21