summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@arm.com>2024-01-17 15:07:19 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-01-19 00:16:42 +0000
commitcb02c049f489faf484cf7cd6366e80250ce2e03c (patch)
tree24f20d2e7d4ff213c40e1bcd66884cc646733a2c
parente85f0c247fa21660c7be489f359281896331a717 (diff)
downloadpoky-cb02c049f489faf484cf7cd6366e80250ce2e03c.tar.gz
libunwind: refresh patches
0001-src-Gtrace-remove-unguarded-print-calls.patch has been merged, so update the Upstream-Status. 0003-x86-Stub-out-x86_local_resume.patch has been hopefully obsoleted by the use of libucontext, remove. Split 004-Fix-build-on-mips-musl.patch into two, as there's two independent issues here. 0006-Fix-for-X32.patch appears to have been fixed with 31738a upstream, in 1.6.0. musl-header-conflict.patch was obsoleted by recipe-specific-sysroots, remove it. (From OE-Core rev: 916c67e3e16c5c355ce6f2a88f3f2a7506af4980) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch4
-rw-r--r--meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch55
-rw-r--r--meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch84
-rw-r--r--meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch29
-rw-r--r--meta/recipes-support/libunwind/libunwind/mips-byte-order.patch35
-rw-r--r--meta/recipes-support/libunwind/libunwind/mips-coredump-register.patch100
-rw-r--r--meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch44
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.6.2.bb6
8 files changed, 139 insertions, 218 deletions
diff --git a/meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch b/meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch
index fdadcd3b25..5840c2b4f6 100644
--- a/meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch
+++ b/meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch
@@ -1,4 +1,4 @@
1From 87d24ee47fd0e0461fca32d17564f21d76cbcb92 Mon Sep 17 00:00:00 2001 1From 9b27fa9bcd5cadd4c841c42710f41a090377e531 Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@arm.com> 2From: Ross Burton <ross.burton@arm.com>
3Date: Fri, 24 Mar 2023 16:18:44 +0000 3Date: Fri, 24 Mar 2023 16:18:44 +0000
4Subject: [PATCH] src/Gtrace: remove unguarded print() calls 4Subject: [PATCH] src/Gtrace: remove unguarded print() calls
@@ -19,7 +19,7 @@ needs to be implemented.
19 19
20Fixes #482. 20Fixes #482.
21 21
22Upstream-Status: Submitted [https://github.com/libunwind/libunwind/pull/483] 22Upstream-Status: Backport [9b27fa9bcd5cadd4c841c42710f41a090377e531]
23Signed-off-by: Ross Burton <ross.burton@arm.com> 23Signed-off-by: Ross Burton <ross.burton@arm.com>
24--- 24---
25 src/arm/Gtrace.c | 4 ++-- 25 src/arm/Gtrace.c | 4 ++--
diff --git a/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch b/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch
deleted file mode 100644
index f02f13f79c..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch
+++ /dev/null
@@ -1,55 +0,0 @@
1From 0b2243f19d4ea12a2a68478a5aed503947a800af Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 22 Mar 2016 16:19:29 +0000
4Subject: [PATCH] x86: Stub out x86_local_resume()
5
6its purpose seems
7to be unwinding across signal handler boundaries, which cannot happen
8in correct programs anyway. Replacing the whole function with
9something like *(volatile char *)0=0; (i.e. crash), gets a working
10libunwind
11
12Upstream-Status: Pending
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14
15---
16 src/x86/Gos-linux.c | 26 +-------------------------
17 1 file changed, 1 insertion(+), 25 deletions(-)
18
19diff --git a/src/x86/Gos-linux.c b/src/x86/Gos-linux.c
20index d448dce..c25ae0c 100644
21--- a/src/x86/Gos-linux.c
22+++ b/src/x86/Gos-linux.c
23@@ -284,31 +284,7 @@ x86_r_uc_addr (ucontext_t *uc, int reg)
24 HIDDEN int
25 x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
26 {
27- struct cursor *c = (struct cursor *) cursor;
28- ucontext_t *uc = c->uc;
29-
30- /* Ensure c->pi is up-to-date. On x86, it's relatively common to be
31- missing DWARF unwind info. We don't want to fail in that case,
32- because the frame-chain still would let us do a backtrace at
33- least. */
34- dwarf_make_proc_info (&c->dwarf);
35-
36- if (unlikely (c->sigcontext_format != X86_SCF_NONE))
37- {
38- struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
39-
40- Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc);
41-#if !defined(__ANDROID__)
42- x86_sigreturn (sc);
43-#endif
44- }
45- else
46- {
47- Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip);
48-#if !defined(__ANDROID__)
49- setcontext (uc);
50-#endif
51- }
52+ *(volatile char *)0=0;
53 return -UNW_EINVAL;
54 }
55
diff --git a/meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch b/meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch
deleted file mode 100644
index 124d0e00b1..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch
+++ /dev/null
@@ -1,84 +0,0 @@
1From 6bdab5cc8f1e2ec5f84fc9f59f1699a726980709 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 23 Mar 2016 06:08:59 +0000
4Subject: [PATCH 4/6] Fix build on mips/musl
5
6Do not include endian.h on musl it includes
7further headers which can not be compiled in __ASSEMBLER__
8 mode
9
10Upstream-Status: Pending
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12
13---
14 src/coredump/_UCD_internal.h | 35 +++++++++++++++++++++++++++++++++++
15 src/mips/getcontext.S | 3 +--
16 2 files changed, 36 insertions(+), 2 deletions(-)
17
18diff --git a/src/coredump/_UCD_internal.h b/src/coredump/_UCD_internal.h
19index 3c95a2a..21ed1c3 100644
20--- a/src/coredump/_UCD_internal.h
21+++ b/src/coredump/_UCD_internal.h
22@@ -44,6 +44,41 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
23
24 #include "libunwind_i.h"
25
26+#ifndef __GLIBC__
27+#include <sys/reg.h>
28+
29+#define EF_REG0 6
30+#define EF_REG1 7
31+#define EF_REG2 8
32+#define EF_REG3 9
33+#define EF_REG4 10
34+#define EF_REG5 11
35+#define EF_REG6 12
36+#define EF_REG7 13
37+#define EF_REG8 14
38+#define EF_REG9 15
39+#define EF_REG10 16
40+#define EF_REG11 17
41+#define EF_REG12 18
42+#define EF_REG13 19
43+#define EF_REG14 20
44+#define EF_REG15 21
45+#define EF_REG16 22
46+#define EF_REG17 23
47+#define EF_REG18 24
48+#define EF_REG19 25
49+#define EF_REG20 26
50+#define EF_REG21 27
51+#define EF_REG22 28
52+#define EF_REG23 29
53+#define EF_REG24 30
54+#define EF_REG25 31
55+#define EF_REG28 34
56+#define EF_REG29 35
57+#define EF_REG30 36
58+#define EF_REG31 37
59+#endif
60+
61
62 #if SIZEOF_OFF_T == 4
63 typedef uint32_t uoff_t;
64diff --git a/src/mips/getcontext.S b/src/mips/getcontext.S
65index d1dbd57..de9b681 100644
66--- a/src/mips/getcontext.S
67+++ b/src/mips/getcontext.S
68@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
69 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
70
71 #include "offsets.h"
72-#include <endian.h>
73
74 .text
75
76 #if _MIPS_SIM == _ABIO32
77-# if __BYTE_ORDER == __BIG_ENDIAN
78+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
79 # define OFFSET 4
80 # else
81 # define OFFSET 0
82--
832.20.1
84
diff --git a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch b/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch
deleted file mode 100644
index 9941612387..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From f2eae0af620925b3686410470fc6fbc66ec1dc52 Mon Sep 17 00:00:00 2001
2From: Christopher Larson <chris_larson@mentor.com>
3Date: Tue, 13 Dec 2016 09:50:34 -0700
4Subject: [PATCH] Fix for X32
5
6Apply patch to fix the X32 build from https://github.com/sjnewbury/x32.
7
8Upstream-Status: Pending
9Signed-off-by: Christopher Larson <chris_larson@mentor.com>
10
11---
12 src/x86_64/Gos-linux.c | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/src/x86_64/Gos-linux.c b/src/x86_64/Gos-linux.c
16index b489329..0550005 100644
17--- a/src/x86_64/Gos-linux.c
18+++ b/src/x86_64/Gos-linux.c
19@@ -146,8 +146,8 @@ x86_64_sigreturn (unw_cursor_t *cursor)
20
21 Debug (8, "resuming at ip=%llx via sigreturn(%p)\n",
22 (unsigned long long) c->dwarf.ip, sc);
23- __asm__ __volatile__ ("mov %0, %%rsp;"
24- "mov %1, %%rax;"
25+ __asm__ __volatile__ ("mov %q0, %%rsp;"
26+ "mov %q1, %%rax;"
27 "syscall"
28 :: "r"((uint64_t)sc), "i"(SYS_rt_sigreturn)
29 : "memory");
diff --git a/meta/recipes-support/libunwind/libunwind/mips-byte-order.patch b/meta/recipes-support/libunwind/libunwind/mips-byte-order.patch
new file mode 100644
index 0000000000..8848780fd1
--- /dev/null
+++ b/meta/recipes-support/libunwind/libunwind/mips-byte-order.patch
@@ -0,0 +1,35 @@
1From dbbf8110ed3fd2cbac20a8ec2ac769e13c67bab1 Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@arm.com>
3Date: Tue, 16 Jan 2024 18:22:38 +0000
4Subject: [PATCH 2/2] byte order
5
6endian.h on musl/mips can't be included in __ASSEMBLER__ mode,
7so use the __BYTE_ORDER__ symbol instead.
8
9Upstream-Status: Pending
10Signed-off-by: Ross Burton <ross.burton@arm.com>
11---
12 src/mips/getcontext.S | 3 +--
13 1 file changed, 1 insertion(+), 2 deletions(-)
14
15diff --git a/src/mips/getcontext.S b/src/mips/getcontext.S
16index d1dbd579..de9b6818 100644
17--- a/src/mips/getcontext.S
18+++ b/src/mips/getcontext.S
19@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
21
22 #include "offsets.h"
23-#include <endian.h>
24
25 .text
26
27 #if _MIPS_SIM == _ABIO32
28-# if __BYTE_ORDER == __BIG_ENDIAN
29+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
30 # define OFFSET 4
31 # else
32 # define OFFSET 0
33--
342.34.1
35
diff --git a/meta/recipes-support/libunwind/libunwind/mips-coredump-register.patch b/meta/recipes-support/libunwind/libunwind/mips-coredump-register.patch
new file mode 100644
index 0000000000..68adcd1d71
--- /dev/null
+++ b/meta/recipes-support/libunwind/libunwind/mips-coredump-register.patch
@@ -0,0 +1,100 @@
1From 7750e2a29b084ee033acc82abab410035e220d3f Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@arm.com>
3Date: Tue, 16 Jan 2024 18:21:26 +0000
4Subject: [PATCH 1/2] coredump-mips-register
5
6glibc and musl have different names for the registers, add a
7macro that generates the names appropriately.
8
9Upstream-Status: Pending
10Signed-off-by: Ross Burton <ross.burton@arm.com>
11
12---
13 src/coredump/_UCD_access_reg_linux.c | 69 ++++++++++++++++------------
14 1 file changed, 39 insertions(+), 30 deletions(-)
15
16diff --git a/src/coredump/_UCD_access_reg_linux.c b/src/coredump/_UCD_access_reg_linux.c
17index 27eef123..beefdb47 100644
18--- a/src/coredump/_UCD_access_reg_linux.c
19+++ b/src/coredump/_UCD_access_reg_linux.c
20@@ -67,38 +67,47 @@ _UCD_access_reg (unw_addr_space_t as,
21 goto badreg;
22 #else
23 #if defined(UNW_TARGET_MIPS)
24+
25+/* glibc and musl use different names */
26+#ifdef __GLIBC__
27+#define EF_REG(x) EF_REG ## x
28+#else
29+#include <sys/reg.h>
30+#define EF_REG(x) EF_R ## x
31+#endif
32+
33 static const uint8_t remap_regs[] =
34 {
35- [UNW_MIPS_R0] = EF_REG0,
36- [UNW_MIPS_R1] = EF_REG1,
37- [UNW_MIPS_R2] = EF_REG2,
38- [UNW_MIPS_R3] = EF_REG3,
39- [UNW_MIPS_R4] = EF_REG4,
40- [UNW_MIPS_R5] = EF_REG5,
41- [UNW_MIPS_R6] = EF_REG6,
42- [UNW_MIPS_R7] = EF_REG7,
43- [UNW_MIPS_R8] = EF_REG8,
44- [UNW_MIPS_R9] = EF_REG9,
45- [UNW_MIPS_R10] = EF_REG10,
46- [UNW_MIPS_R11] = EF_REG11,
47- [UNW_MIPS_R12] = EF_REG12,
48- [UNW_MIPS_R13] = EF_REG13,
49- [UNW_MIPS_R14] = EF_REG14,
50- [UNW_MIPS_R15] = EF_REG15,
51- [UNW_MIPS_R16] = EF_REG16,
52- [UNW_MIPS_R17] = EF_REG17,
53- [UNW_MIPS_R18] = EF_REG18,
54- [UNW_MIPS_R19] = EF_REG19,
55- [UNW_MIPS_R20] = EF_REG20,
56- [UNW_MIPS_R21] = EF_REG21,
57- [UNW_MIPS_R22] = EF_REG22,
58- [UNW_MIPS_R23] = EF_REG23,
59- [UNW_MIPS_R24] = EF_REG24,
60- [UNW_MIPS_R25] = EF_REG25,
61- [UNW_MIPS_R28] = EF_REG28,
62- [UNW_MIPS_R29] = EF_REG29,
63- [UNW_MIPS_R30] = EF_REG30,
64- [UNW_MIPS_R31] = EF_REG31,
65+ [UNW_MIPS_R0] = EF_REG(0),
66+ [UNW_MIPS_R1] = EF_REG(1),
67+ [UNW_MIPS_R2] = EF_REG(2),
68+ [UNW_MIPS_R3] = EF_REG(3),
69+ [UNW_MIPS_R4] = EF_REG(4),
70+ [UNW_MIPS_R5] = EF_REG(5),
71+ [UNW_MIPS_R6] = EF_REG(6),
72+ [UNW_MIPS_R7] = EF_REG(7),
73+ [UNW_MIPS_R8] = EF_REG(8),
74+ [UNW_MIPS_R9] = EF_REG(9),
75+ [UNW_MIPS_R10] = EF_REG(10),
76+ [UNW_MIPS_R11] = EF_REG(11),
77+ [UNW_MIPS_R12] = EF_REG(12),
78+ [UNW_MIPS_R13] = EF_REG(13),
79+ [UNW_MIPS_R14] = EF_REG(14),
80+ [UNW_MIPS_R15] = EF_REG(15),
81+ [UNW_MIPS_R16] = EF_REG(16),
82+ [UNW_MIPS_R17] = EF_REG(17),
83+ [UNW_MIPS_R18] = EF_REG(18),
84+ [UNW_MIPS_R19] = EF_REG(19),
85+ [UNW_MIPS_R20] = EF_REG(20),
86+ [UNW_MIPS_R21] = EF_REG(21),
87+ [UNW_MIPS_R22] = EF_REG(22),
88+ [UNW_MIPS_R23] = EF_REG(23),
89+ [UNW_MIPS_R24] = EF_REG(24),
90+ [UNW_MIPS_R25] = EF_REG(25),
91+ [UNW_MIPS_R28] = EF_REG(28),
92+ [UNW_MIPS_R29] = EF_REG(29),
93+ [UNW_MIPS_R30] = EF_REG(30),
94+ [UNW_MIPS_R31] = EF_REG(31),
95 [UNW_MIPS_PC] = EF_CP0_EPC,
96 };
97 #elif defined(UNW_TARGET_X86)
98--
992.34.1
100
diff --git a/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch b/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
deleted file mode 100644
index 49985b5b3c..0000000000
--- a/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
+++ /dev/null
@@ -1,44 +0,0 @@
1From e1de5a5b42062dc02769f320c7785928b2ee0c57 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Thu, 18 Aug 2016 14:46:32 +0100
4Subject: [PATCH] If you:
5
6TCLIBC=musl bitbake unwind
7TCLIBC=musl bitbake gcc-runtime -c cleansstate
8TCLIBC=musl bitbake gcc-runtime
9
10you will see libstdc++ fail to build due to finding libunwind's header file.
11
12Khem: "When we build any of gcc components they expect to use internal version
13and that works with glibc based gcc since the search headers first look into gcc
14headers, however with musl the gcc headers are searched after the standard
15headers ( which is by design the right thing )."
16
17This patch hacks around the issue by looking for a define used during gcc-runtime's
18build and skipping to the internal header in that case.
19
20[YOCTO #10129]
21
22RP 2016/8/18
23
24Upstream-Status: Inappropriate [really need to fix gcc]
25
26---
27 include/unwind.h | 4 ++++
28 1 file changed, 4 insertions(+)
29
30diff --git a/include/unwind.h b/include/unwind.h
31index 93780fa..c812414 100644
32--- a/include/unwind.h
33+++ b/include/unwind.h
34@@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
37
38+#ifdef _GLIBCXX_SHARED
39+#include_next <unwind.h>
40+#endif
41+
42 #ifndef _UNWIND_H
43 #define _UNWIND_H
44
diff --git a/meta/recipes-support/libunwind/libunwind_1.6.2.bb b/meta/recipes-support/libunwind/libunwind_1.6.2.bb
index 650e2c9ec4..d40a2af26d 100644
--- a/meta/recipes-support/libunwind/libunwind_1.6.2.bb
+++ b/meta/recipes-support/libunwind/libunwind_1.6.2.bb
@@ -7,13 +7,11 @@ DEPENDS += "libatomic-ops"
7DEPENDS:append:libc-musl = " libucontext" 7DEPENDS:append:libc-musl = " libucontext"
8 8
9SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \ 9SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \
10 file://0003-x86-Stub-out-x86_local_resume.patch \ 10 file://mips-byte-order.patch \
11 file://0004-Fix-build-on-mips-musl.patch \ 11 file://mips-coredump-register.patch \
12 file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \ 12 file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
13 file://0006-Fix-for-X32.patch \
14 file://0001-src-Gtrace-remove-unguarded-print-calls.patch \ 13 file://0001-src-Gtrace-remove-unguarded-print-calls.patch \
15 " 14 "
16SRC_URI:append:libc-musl = " file://musl-header-conflict.patch"
17 15
18SRC_URI[sha256sum] = "4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976" 16SRC_URI[sha256sum] = "4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976"
19 17