diff options
Diffstat (limited to 'meta/recipes-support/libunwind/libunwind')
12 files changed, 194 insertions, 806 deletions
diff --git a/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch b/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch deleted file mode 100644 index 437b878365..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 599f10ac3a24e419a93f97fddbe14de01b1185ea Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Date: Tue, 13 May 2014 23:32:27 +0200 -Subject: [PATCH 1/6] Add AO_REQUIRE_CAS to fix build on ARM < v6 - -ARM earlier than ARMv6, such as ARMv4 and ARMv5 do not provide -optimize atomic operations in libatomic_ops. Since libunwind is using -such operations, it should define AO_REQUIRE_CAS before including -<atomic_ops.h> so that libatomic_ops knows it should use emulated -atomic operations instead (even though they are obviously a lot more -expensive). - -Also, while real atomic operations are all inline functions and -therefore linking against libatomic_ops was not required, the emulated -atomic operations actually require linking against libatomic_ops, so -the commented AC_CHECK_LIB test in acinclude.m4 is uncommented to make -sure we link against libatomic_ops. - -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> - -Upstream-Status: Pending -Taken from: -https://raw.githubusercontent.com/rdnetto/teapot-buildroot/master/package/libunwind/libunwind-02-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch - ---- - acinclude.m4 | 8 +------- - include/libunwind_i.h | 1 + - 2 files changed, 2 insertions(+), 7 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 497f7c2..9c15af1 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -22,11 +22,5 @@ fi]) - AC_DEFUN([CHECK_ATOMIC_OPS], - [dnl Check whether the system has the atomic_ops package installed. - AC_CHECK_HEADERS(atomic_ops.h) --# --# Don't link against libatomic_ops for now. We don't want libunwind --# to depend on libatomic_ops.so. Fortunately, none of the platforms --# we care about so far need libatomic_ops.a (everything is done via --# inline macros). --# --# AC_CHECK_LIB(atomic_ops, main) -+ AC_CHECK_LIB(atomic_ops, main) - ]) -diff --git a/include/libunwind_i.h b/include/libunwind_i.h -index 36cf7a1..33b4ca3 100644 ---- a/include/libunwind_i.h -+++ b/include/libunwind_i.h -@@ -124,6 +124,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - (pthread_mutex_unlock != NULL ? pthread_mutex_unlock (l) : 0) - - #ifdef HAVE_ATOMIC_OPS_H -+# define AO_REQUIRE_CAS - # include <atomic_ops.h> - static inline int - cmpxchg_ptr (void *addr, void *old, void *new) --- -2.20.1 - diff --git a/meta/recipes-support/libunwind/libunwind/0001-Fix-compilation-with-fno-common.patch b/meta/recipes-support/libunwind/libunwind/0001-Fix-compilation-with-fno-common.patch deleted file mode 100644 index e11487fe97..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-Fix-compilation-with-fno-common.patch +++ /dev/null @@ -1,448 +0,0 @@ -From 00d18b21dcb9723c4f13889a39a760a654782370 Mon Sep 17 00:00:00 2001 -From: Yichao Yu <yyc1992@gmail.com> -Date: Tue, 31 Mar 2020 00:43:32 -0400 -Subject: [PATCH] Fix compilation with -fno-common. - -Making all other archs consistent with IA64 which should not have this problem. -Also move the FIXME to the correct place. - -Also add some minimum comments about this... - -Upstream-Status: Backport [https://github.com/libunwind/libunwind/pull/166] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - src/aarch64/Ginit.c | 15 +++++++-------- - src/arm/Ginit.c | 15 +++++++-------- - src/coredump/_UPT_get_dyn_info_list_addr.c | 5 +++++ - src/hppa/Ginit.c | 15 +++++++-------- - src/ia64/Ginit.c | 1 + - src/mi/Gfind_dynamic_proc_info.c | 1 + - src/mips/Ginit.c | 15 +++++++-------- - src/ppc32/Ginit.c | 11 +++++++---- - src/ppc64/Ginit.c | 11 +++++++---- - src/ptrace/_UPT_get_dyn_info_list_addr.c | 5 +++++ - src/s390x/Ginit.c | 15 +++++++-------- - src/sh/Ginit.c | 15 +++++++-------- - src/tilegx/Ginit.c | 15 +++++++-------- - src/x86/Ginit.c | 15 +++++++-------- - src/x86_64/Ginit.c | 15 +++++++-------- - 15 files changed, 89 insertions(+), 80 deletions(-) - -diff --git a/src/aarch64/Ginit.c b/src/aarch64/Ginit.c -index dec235c..3538976 100644 ---- a/src/aarch64/Ginit.c -+++ b/src/aarch64/Ginit.c -@@ -61,13 +61,6 @@ tdep_uc_addr (unw_tdep_context_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -78,7 +71,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/arm/Ginit.c b/src/arm/Ginit.c -index 2720d06..0bac0d7 100644 ---- a/src/arm/Ginit.c -+++ b/src/arm/Ginit.c -@@ -57,18 +57,17 @@ tdep_uc_addr (unw_tdep_context_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/coredump/_UPT_get_dyn_info_list_addr.c b/src/coredump/_UPT_get_dyn_info_list_addr.c -index 0d11905..739ed05 100644 ---- a/src/coredump/_UPT_get_dyn_info_list_addr.c -+++ b/src/coredump/_UPT_get_dyn_info_list_addr.c -@@ -74,6 +74,11 @@ get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - - #else - -+/* XXX fix me: there is currently no way to locate the dyn-info list -+ by a remote unwinder. On ia64, this is done via a special -+ unwind-table entry. Perhaps something similar can be done with -+ DWARF2 unwind info. */ -+ - static inline int - get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - int *countp) -diff --git a/src/hppa/Ginit.c b/src/hppa/Ginit.c -index 461e4b9..265455a 100644 ---- a/src/hppa/Ginit.c -+++ b/src/hppa/Ginit.c -@@ -64,13 +64,6 @@ _Uhppa_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -81,7 +74,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/ia64/Ginit.c b/src/ia64/Ginit.c -index b09a2ad..8601bb3 100644 ---- a/src/ia64/Ginit.c -+++ b/src/ia64/Ginit.c -@@ -68,6 +68,7 @@ get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - if (!_U_dyn_info_list_addr) - return -UNW_ENOINFO; - #endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. - *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } -diff --git a/src/mi/Gfind_dynamic_proc_info.c b/src/mi/Gfind_dynamic_proc_info.c -index 98d3501..2e7c62e 100644 ---- a/src/mi/Gfind_dynamic_proc_info.c -+++ b/src/mi/Gfind_dynamic_proc_info.c -@@ -49,6 +49,7 @@ local_find_proc_info (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, - return -UNW_ENOINFO; - #endif - -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. - list = (unw_dyn_info_list_t *) (uintptr_t) _U_dyn_info_list_addr (); - for (di = list->first; di; di = di->next) - if (ip >= di->start_ip && ip < di->end_ip) -diff --git a/src/mips/Ginit.c b/src/mips/Ginit.c -index 3df170c..bf7a8f5 100644 ---- a/src/mips/Ginit.c -+++ b/src/mips/Ginit.c -@@ -69,13 +69,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -86,7 +79,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) (intptr_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c -index c5312d9..f8d6886 100644 ---- a/src/ppc32/Ginit.c -+++ b/src/ppc32/Ginit.c -@@ -91,9 +91,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -104,7 +101,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/ppc64/Ginit.c b/src/ppc64/Ginit.c -index 4c88cd6..7bfb395 100644 ---- a/src/ppc64/Ginit.c -+++ b/src/ppc64/Ginit.c -@@ -95,9 +95,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -108,7 +105,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/ptrace/_UPT_get_dyn_info_list_addr.c b/src/ptrace/_UPT_get_dyn_info_list_addr.c -index cc5ed04..16671d4 100644 ---- a/src/ptrace/_UPT_get_dyn_info_list_addr.c -+++ b/src/ptrace/_UPT_get_dyn_info_list_addr.c -@@ -71,6 +71,11 @@ get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - - #else - -+/* XXX fix me: there is currently no way to locate the dyn-info list -+ by a remote unwinder. On ia64, this is done via a special -+ unwind-table entry. Perhaps something similar can be done with -+ DWARF2 unwind info. */ -+ - static inline int - get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - int *countp) -diff --git a/src/s390x/Ginit.c b/src/s390x/Ginit.c -index f0886ac..db01743 100644 ---- a/src/s390x/Ginit.c -+++ b/src/s390x/Ginit.c -@@ -50,8 +50,6 @@ static struct unw_addr_space local_addr_space; - - unw_addr_space_t unw_local_addr_space = &local_addr_space; - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- - static inline void * - uc_addr (ucontext_t *uc, int reg) - { -@@ -75,11 +73,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -90,7 +83,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/sh/Ginit.c b/src/sh/Ginit.c -index 52988a7..9fe96d2 100644 ---- a/src/sh/Ginit.c -+++ b/src/sh/Ginit.c -@@ -58,13 +58,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -75,7 +68,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/tilegx/Ginit.c b/src/tilegx/Ginit.c -index 7564a55..925e641 100644 ---- a/src/tilegx/Ginit.c -+++ b/src/tilegx/Ginit.c -@@ -64,13 +64,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -81,7 +74,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) (intptr_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/x86/Ginit.c b/src/x86/Ginit.c -index f6b8dc2..3cec74a 100644 ---- a/src/x86/Ginit.c -+++ b/src/x86/Ginit.c -@@ -54,13 +54,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) - - # endif /* UNW_LOCAL_ONLY */ - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -71,7 +64,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - -diff --git a/src/x86_64/Ginit.c b/src/x86_64/Ginit.c -index 6161da6..5c4e426 100644 ---- a/src/x86_64/Ginit.c -+++ b/src/x86_64/Ginit.c -@@ -49,13 +49,6 @@ static struct unw_addr_space local_addr_space; - - unw_addr_space_t unw_local_addr_space = &local_addr_space; - --HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -- --/* XXX fix me: there is currently no way to locate the dyn-info list -- by a remote unwinder. On ia64, this is done via a special -- unwind-table entry. Perhaps something similar can be done with -- DWARF2 unwind info. */ -- - static void - put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) - { -@@ -66,7 +59,13 @@ static int - get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) - { -- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; -+#ifndef UNW_LOCAL_ONLY -+# pragma weak _U_dyn_info_list_addr -+ if (!_U_dyn_info_list_addr) -+ return -UNW_ENOINFO; -+#endif -+ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. -+ *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; - } - --- -2.28.0 - 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 new file mode 100644 index 0000000000..5840c2b4f6 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0001-src-Gtrace-remove-unguarded-print-calls.patch @@ -0,0 +1,52 @@ +From 9b27fa9bcd5cadd4c841c42710f41a090377e531 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Fri, 24 Mar 2023 16:18:44 +0000 +Subject: [PATCH] src/Gtrace: remove unguarded print() calls + +There is a use of printf() without #include stdio.h in src/arm/Gtrace.c, +which results in a compiler error if clang 16 is used: + +src/arm/Gtrace.c:529:7: error: call to undeclared library function +'printf' with type 'int (const char *, ...)'; ISO C99 and later do not +support implicit function declarations [-Wimplicit-function-declaration] + +Replace the printf("XXX") with a Dprintf, so it doesn't pull stdio in +unless in a debug build, and reword the message to be clearer. + +Also there is another printf("XXX") inside a FreeBSD-specific block in +the UNW_ARM_FRAME_SIGRETURN case, replace this with a #error as the code +needs to be implemented. + +Fixes #482. + +Upstream-Status: Backport [9b27fa9bcd5cadd4c841c42710f41a090377e531] +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + src/arm/Gtrace.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/arm/Gtrace.c b/src/arm/Gtrace.c +index 51fc281d..9e0f25af 100644 +--- a/src/arm/Gtrace.c ++++ b/src/arm/Gtrace.c +@@ -514,7 +514,7 @@ tdep_trace (unw_cursor_t *cursor, void **buffer, int *size) + if (likely(ret >= 0)) + ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_LR_OFF, lr); + #elif defined(__FreeBSD__) +- printf("XXX\n"); ++ #error implement UNW_ARM_FRAME_SIGRETURN on FreeBSD + #endif + + /* Resume stack at signal restoration point. The stack is not +@@ -526,7 +526,7 @@ tdep_trace (unw_cursor_t *cursor, void **buffer, int *size) + break; + + case UNW_ARM_FRAME_SYSCALL: +- printf("XXX1\n"); ++ Dprintf ("%s: implement me\n", __FUNCTION__); + break; + + default: +-- +2.34.1 + diff --git a/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch b/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch deleted file mode 100644 index 1b862dccb1..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch +++ /dev/null @@ -1,45 +0,0 @@ -From b61446add7ae1c041266c2fa5ba2f51cb3b65d35 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Thu, 31 Dec 2015 06:44:07 +0000 -Subject: [PATCH 2/6] backtrace: Use only with glibc and uclibc - -backtrace API is glibc specific not linux specific -so make it behave so. - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - tests/test-coredump-unwind.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/tests/test-coredump-unwind.c b/tests/test-coredump-unwind.c -index 5349823..3b153cb 100644 ---- a/tests/test-coredump-unwind.c -+++ b/tests/test-coredump-unwind.c -@@ -57,7 +57,9 @@ - #include <grp.h> - - /* For SIGSEGV handler code */ -+#ifdef __GLIBC__ - #include <execinfo.h> -+#endif - #include <sys/ucontext.h> - - #include <libunwind-coredump.h> -@@ -238,11 +240,11 @@ void handle_sigsegv(int sig, siginfo_t *info, void *ucontext) - ip); - - { -+#ifdef __GLIBC__ - /* glibc extension */ - void *array[50]; - int size; - size = backtrace(array, 50); --#ifdef __linux__ - backtrace_symbols_fd(array, size, 2); - #endif - } --- -2.20.1 - 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 508ed6af38..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch +++ /dev/null @@ -1,54 +0,0 @@ -From f6866b9e4a6341c50eb1d923dbf48eca2ca40140 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 22 Mar 2016 16:19:29 +0000 -Subject: [PATCH 3/6] x86: Stub out x86_local_resume() - -its purpose seems -to be unwinding across signal handler boundaries, which cannot happen -in correct programs anyway. Replacing the whole function with -something like *(volatile char *)0=0; (i.e. crash), gets a working -libunwind - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> - ---- - src/x86/Gos-linux.c | 22 +--------------------- - 1 file changed, 1 insertion(+), 21 deletions(-) - -diff --git a/src/x86/Gos-linux.c b/src/x86/Gos-linux.c -index fb9a5e3..c25ae0c 100644 ---- a/src/x86/Gos-linux.c -+++ b/src/x86/Gos-linux.c -@@ -284,27 +284,7 @@ x86_r_uc_addr (ucontext_t *uc, int reg) - HIDDEN int - x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) - { -- struct cursor *c = (struct cursor *) cursor; -- ucontext_t *uc = c->uc; -- -- /* Ensure c->pi is up-to-date. On x86, it's relatively common to be -- missing DWARF unwind info. We don't want to fail in that case, -- because the frame-chain still would let us do a backtrace at -- least. */ -- dwarf_make_proc_info (&c->dwarf); -- -- if (unlikely (c->sigcontext_format != X86_SCF_NONE)) -- { -- struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; -- -- Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc); -- x86_sigreturn (sc); -- } -- else -- { -- Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip); -- setcontext (uc); -- } -+ *(volatile char *)0=0; - return -UNW_EINVAL; - } - --- -2.20.1 - 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 @@ -From 6bdab5cc8f1e2ec5f84fc9f59f1699a726980709 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 23 Mar 2016 06:08:59 +0000 -Subject: [PATCH 4/6] Fix build on mips/musl - -Do not include endian.h on musl it includes -further headers which can not be compiled in __ASSEMBLER__ - mode - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> - ---- - src/coredump/_UCD_internal.h | 35 +++++++++++++++++++++++++++++++++++ - src/mips/getcontext.S | 3 +-- - 2 files changed, 36 insertions(+), 2 deletions(-) - -diff --git a/src/coredump/_UCD_internal.h b/src/coredump/_UCD_internal.h -index 3c95a2a..21ed1c3 100644 ---- a/src/coredump/_UCD_internal.h -+++ b/src/coredump/_UCD_internal.h -@@ -44,6 +44,41 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - - #include "libunwind_i.h" - -+#ifndef __GLIBC__ -+#include <sys/reg.h> -+ -+#define EF_REG0 6 -+#define EF_REG1 7 -+#define EF_REG2 8 -+#define EF_REG3 9 -+#define EF_REG4 10 -+#define EF_REG5 11 -+#define EF_REG6 12 -+#define EF_REG7 13 -+#define EF_REG8 14 -+#define EF_REG9 15 -+#define EF_REG10 16 -+#define EF_REG11 17 -+#define EF_REG12 18 -+#define EF_REG13 19 -+#define EF_REG14 20 -+#define EF_REG15 21 -+#define EF_REG16 22 -+#define EF_REG17 23 -+#define EF_REG18 24 -+#define EF_REG19 25 -+#define EF_REG20 26 -+#define EF_REG21 27 -+#define EF_REG22 28 -+#define EF_REG23 29 -+#define EF_REG24 30 -+#define EF_REG25 31 -+#define EF_REG28 34 -+#define EF_REG29 35 -+#define EF_REG30 36 -+#define EF_REG31 37 -+#endif -+ - - #if SIZEOF_OFF_T == 4 - typedef uint32_t uoff_t; -diff --git a/src/mips/getcontext.S b/src/mips/getcontext.S -index d1dbd57..de9b681 100644 ---- a/src/mips/getcontext.S -+++ b/src/mips/getcontext.S -@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - - #include "offsets.h" --#include <endian.h> - - .text - - #if _MIPS_SIM == _ABIO32 --# if __BYTE_ORDER == __BIG_ENDIAN -+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - # define OFFSET 4 - # else - # define OFFSET 0 --- -2.20.1 - diff --git a/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch b/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch index edaa822be1..e58a71b741 100644 --- a/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch +++ b/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch @@ -1,7 +1,8 @@ -From 02919d74b1599979884f9cee466ed392d9fc4819 Mon Sep 17 00:00:00 2001 +From 24c751f9d21e892a9833e1b70a696b07872b0f7f Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 9 Jul 2016 01:07:53 +0000 -Subject: [PATCH 5/6] ppc32: Consider ucontext mismatches between glibc and +Subject: [PATCH] ppc32: Consider ucontext mismatches between glibc and + musl This helps in porting libunwind onto musl based systems @@ -29,7 +30,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 3 files changed, 92 insertions(+), 79 deletions(-) diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c -index ba30244..c5312d9 100644 +index 7b45455..f8d6886 100644 --- a/src/ppc32/Ginit.c +++ b/src/ppc32/Ginit.c @@ -48,12 +48,12 @@ uc_addr (ucontext_t *uc, int reg) @@ -227,7 +228,7 @@ index c6ba806..b79f15c 100644 #endif diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c -index c82d1c9..6c31baa 100644 +index b7dd3b7..bfaf756 100644 --- a/src/ptrace/_UPT_reg_offset.c +++ b/src/ptrace/_UPT_reg_offset.c @@ -27,6 +27,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ @@ -242,8 +243,5 @@ index c82d1c9..6c31baa 100644 +# undef pt_regs +#endif - #ifdef HAVE_ASM_PTRACE_OFFSETS_H - # include <asm/ptrace_offsets.h> --- -2.20.1 - + #ifdef HAVE_ASM_PTRACE_H + # include <asm/ptrace.h> 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 37ae8124cc..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 7a4fd5933cc795df85cdd85168fe54fbaec4dcec Mon Sep 17 00:00:00 2001 -From: Christopher Larson <chris_larson@mentor.com> -Date: Tue, 13 Dec 2016 09:50:34 -0700 -Subject: [PATCH 6/6] Fix for X32 - -Apply patch to fix the X32 build from https://github.com/sjnewbury/x32. - -Upstream-Status: Pending -Signed-off-by: Christopher Larson <chris_larson@mentor.com> - ---- - src/x86_64/Gos-linux.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/x86_64/Gos-linux.c b/src/x86_64/Gos-linux.c -index bd14234..be1cb5b 100644 ---- a/src/x86_64/Gos-linux.c -+++ b/src/x86_64/Gos-linux.c -@@ -145,8 +145,8 @@ x86_64_sigreturn (unw_cursor_t *cursor) - - Debug (8, "resuming at ip=%llx via sigreturn(%p)\n", - (unsigned long long) c->dwarf.ip, sc); -- __asm__ __volatile__ ("mov %0, %%rsp;" -- "mov %1, %%rax;" -+ __asm__ __volatile__ ("mov %q0, %%rsp;" -+ "mov %q1, %%rax;" - "syscall" - :: "r"(sc), "i"(SYS_rt_sigreturn) - : "memory"); --- -2.20.1 - 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 @@ +From dbbf8110ed3fd2cbac20a8ec2ac769e13c67bab1 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Tue, 16 Jan 2024 18:22:38 +0000 +Subject: [PATCH 2/2] byte order + +endian.h on musl/mips can't be included in __ASSEMBLER__ mode, +so use the __BYTE_ORDER__ symbol instead. + +Upstream-Status: Pending +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + src/mips/getcontext.S | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/mips/getcontext.S b/src/mips/getcontext.S +index d1dbd579..de9b6818 100644 +--- a/src/mips/getcontext.S ++++ b/src/mips/getcontext.S +@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + + #include "offsets.h" +-#include <endian.h> + + .text + + #if _MIPS_SIM == _ABIO32 +-# if __BYTE_ORDER == __BIG_ENDIAN ++# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + # define OFFSET 4 + # else + # define OFFSET 0 +-- +2.34.1 + 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 @@ +From 7750e2a29b084ee033acc82abab410035e220d3f Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Tue, 16 Jan 2024 18:21:26 +0000 +Subject: [PATCH 1/2] coredump-mips-register + +glibc and musl have different names for the registers, add a +macro that generates the names appropriately. + +Upstream-Status: Pending +Signed-off-by: Ross Burton <ross.burton@arm.com> + +--- + src/coredump/_UCD_access_reg_linux.c | 69 ++++++++++++++++------------ + 1 file changed, 39 insertions(+), 30 deletions(-) + +diff --git a/src/coredump/_UCD_access_reg_linux.c b/src/coredump/_UCD_access_reg_linux.c +index 27eef123..beefdb47 100644 +--- a/src/coredump/_UCD_access_reg_linux.c ++++ b/src/coredump/_UCD_access_reg_linux.c +@@ -67,38 +67,47 @@ _UCD_access_reg (unw_addr_space_t as, + goto badreg; + #else + #if defined(UNW_TARGET_MIPS) ++ ++/* glibc and musl use different names */ ++#ifdef __GLIBC__ ++#define EF_REG(x) EF_REG ## x ++#else ++#include <sys/reg.h> ++#define EF_REG(x) EF_R ## x ++#endif ++ + static const uint8_t remap_regs[] = + { +- [UNW_MIPS_R0] = EF_REG0, +- [UNW_MIPS_R1] = EF_REG1, +- [UNW_MIPS_R2] = EF_REG2, +- [UNW_MIPS_R3] = EF_REG3, +- [UNW_MIPS_R4] = EF_REG4, +- [UNW_MIPS_R5] = EF_REG5, +- [UNW_MIPS_R6] = EF_REG6, +- [UNW_MIPS_R7] = EF_REG7, +- [UNW_MIPS_R8] = EF_REG8, +- [UNW_MIPS_R9] = EF_REG9, +- [UNW_MIPS_R10] = EF_REG10, +- [UNW_MIPS_R11] = EF_REG11, +- [UNW_MIPS_R12] = EF_REG12, +- [UNW_MIPS_R13] = EF_REG13, +- [UNW_MIPS_R14] = EF_REG14, +- [UNW_MIPS_R15] = EF_REG15, +- [UNW_MIPS_R16] = EF_REG16, +- [UNW_MIPS_R17] = EF_REG17, +- [UNW_MIPS_R18] = EF_REG18, +- [UNW_MIPS_R19] = EF_REG19, +- [UNW_MIPS_R20] = EF_REG20, +- [UNW_MIPS_R21] = EF_REG21, +- [UNW_MIPS_R22] = EF_REG22, +- [UNW_MIPS_R23] = EF_REG23, +- [UNW_MIPS_R24] = EF_REG24, +- [UNW_MIPS_R25] = EF_REG25, +- [UNW_MIPS_R28] = EF_REG28, +- [UNW_MIPS_R29] = EF_REG29, +- [UNW_MIPS_R30] = EF_REG30, +- [UNW_MIPS_R31] = EF_REG31, ++ [UNW_MIPS_R0] = EF_REG(0), ++ [UNW_MIPS_R1] = EF_REG(1), ++ [UNW_MIPS_R2] = EF_REG(2), ++ [UNW_MIPS_R3] = EF_REG(3), ++ [UNW_MIPS_R4] = EF_REG(4), ++ [UNW_MIPS_R5] = EF_REG(5), ++ [UNW_MIPS_R6] = EF_REG(6), ++ [UNW_MIPS_R7] = EF_REG(7), ++ [UNW_MIPS_R8] = EF_REG(8), ++ [UNW_MIPS_R9] = EF_REG(9), ++ [UNW_MIPS_R10] = EF_REG(10), ++ [UNW_MIPS_R11] = EF_REG(11), ++ [UNW_MIPS_R12] = EF_REG(12), ++ [UNW_MIPS_R13] = EF_REG(13), ++ [UNW_MIPS_R14] = EF_REG(14), ++ [UNW_MIPS_R15] = EF_REG(15), ++ [UNW_MIPS_R16] = EF_REG(16), ++ [UNW_MIPS_R17] = EF_REG(17), ++ [UNW_MIPS_R18] = EF_REG(18), ++ [UNW_MIPS_R19] = EF_REG(19), ++ [UNW_MIPS_R20] = EF_REG(20), ++ [UNW_MIPS_R21] = EF_REG(21), ++ [UNW_MIPS_R22] = EF_REG(22), ++ [UNW_MIPS_R23] = EF_REG(23), ++ [UNW_MIPS_R24] = EF_REG(24), ++ [UNW_MIPS_R25] = EF_REG(25), ++ [UNW_MIPS_R28] = EF_REG(28), ++ [UNW_MIPS_R29] = EF_REG(29), ++ [UNW_MIPS_R30] = EF_REG(30), ++ [UNW_MIPS_R31] = EF_REG(31), + [UNW_MIPS_PC] = EF_CP0_EPC, + }; + #elif defined(UNW_TARGET_X86) +-- +2.34.1 + 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 63b78a8a30..0000000000 --- a/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 49b21f0fe5fb93b30b94cc449429fd33de0652a7 Mon Sep 17 00:00:00 2001 -From: Richard Purdie <richard.purdie@linuxfoundation.org> -Date: Thu, 18 Aug 2016 14:46:32 +0100 -Subject: [PATCH] If you: - -TCLIBC=musl bitbake unwind -TCLIBC=musl bitbake gcc-runtime -c cleansstate -TCLIBC=musl bitbake gcc-runtime - -you will see libstdc++ fail to build due to finding libunwind's header file. - -Khem: "When we build any of gcc components they expect to use internal version -and that works with glibc based gcc since the search headers first look into gcc -headers, however with musl the gcc headers are searched after the standard -headers ( which is by design the right thing )." - -This patch hacks around the issue by looking for a define used during gcc-runtime's -build and skipping to the internal header in that case. - -[YOCTO #10129] - -RP 2016/8/18 - -Upstream-Status: Inappropriate [really need to fix gcc] - ---- - include/unwind.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/include/unwind.h b/include/unwind.h -index 7cf128d..31c2871 100644 ---- a/include/unwind.h -+++ b/include/unwind.h -@@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -+#ifdef _GLIBCXX_SHARED -+#include_next <unwind.h> -+#endif -+ - #ifndef _UNWIND_H - #define _UNWIND_H - diff --git a/meta/recipes-support/libunwind/libunwind/sigset_t.patch b/meta/recipes-support/libunwind/libunwind/sigset_t.patch deleted file mode 100644 index 6baaa77db5..0000000000 --- a/meta/recipes-support/libunwind/libunwind/sigset_t.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 5df1555828add4e256cb4bba49fffffc22127c34 Mon Sep 17 00:00:00 2001 -From: Dave Watson <dade.watson@gmail.com> -Date: Wed, 27 May 2020 08:21:04 -0700 -Subject: [PATCH] aarch64: Fix __sigset build issue on muslC - -Described in issue #176. Taken from Alpine Linux project. - -Change __sigset_t to sigset_t - -Upstream-Status: Backport [https://github.com/libunwind/libunwind/commit/5df1555828] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - include/libunwind-aarch64.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/libunwind-aarch64.h b/include/libunwind-aarch64.h -index db01a9f69..d1bd8708f 100644 ---- a/include/libunwind-aarch64.h -+++ b/include/libunwind-aarch64.h -@@ -202,7 +202,7 @@ typedef struct - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; -- __sigset_t uc_sigmask; -+ sigset_t uc_sigmask; - struct unw_sigcontext uc_mcontext; - } unw_tdep_context_t; - |