From 0471307da8d1e0df27df115c47d05e7b64dea080 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 8 Feb 2019 15:11:45 -0800 Subject: libunwind: Upgrade to 1.3.1 release - Drop upstreamed patch to enable/disable tests - Forward port rest of patches to new version Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- ...Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch | 62 +++++ .../libunwind/0001-Fix-build-on-mips-musl.patch | 81 ------- .../0001-add-knobs-to-disable-enable-tests.patch | 69 ------ ...-backtrace-Use-only-with-glibc-and-uclibc.patch | 45 ---- ...der-ucontext-mismatches-between-glibc-and.patch | 248 -------------------- .../0001-x86-Stub-out-x86_local_resume.patch | 54 ----- ...-backtrace-Use-only-with-glibc-and-uclibc.patch | 45 ++++ .../0003-x86-Stub-out-x86_local_resume.patch | 54 +++++ .../libunwind/0004-Fix-build-on-mips-musl.patch | 84 +++++++ ...der-ucontext-mismatches-between-glibc-and.patch | 249 +++++++++++++++++++++ .../libunwind/libunwind/0006-Fix-for-X32.patch | 32 +++ ...Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch | 59 ----- .../libunwind/libunwind/libunwind-1.1-x32.patch | 31 --- meta/recipes-support/libunwind/libunwind_1.2.1.bb | 25 --- meta/recipes-support/libunwind/libunwind_1.3.1.bb | 24 ++ 15 files changed, 550 insertions(+), 612 deletions(-) create mode 100644 meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch create mode 100644 meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch create mode 100644 meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch create mode 100644 meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch create mode 100644 meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch create mode 100644 meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch delete mode 100644 meta/recipes-support/libunwind/libunwind/libunwind-1.1-x32.patch delete mode 100644 meta/recipes-support/libunwind/libunwind_1.2.1.bb create mode 100644 meta/recipes-support/libunwind/libunwind_1.3.1.bb (limited to 'meta/recipes-support/libunwind') 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 new file mode 100644 index 0000000000..437b878365 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch @@ -0,0 +1,62 @@ +From 599f10ac3a24e419a93f97fddbe14de01b1185ea Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +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 + 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 +Signed-off-by: Martin Jansa + +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 + static inline int + cmpxchg_ptr (void *addr, void *old, void *new) +-- +2.20.1 + diff --git a/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch b/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch deleted file mode 100644 index 8bcc252bad..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch +++ /dev/null @@ -1,81 +0,0 @@ -From e623c7703945a5eb6c9a30586ec5e23b2f7396f6 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 23 Mar 2016 06:08:59 +0000 -Subject: [PATCH] Fix build on mips/musl - -Do not include endian.h on musl it includes -further headers which can not be compiled in __ASSEMBLER__ - mode - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - src/coredump/_UCD_internal.h | 34 ++++++++++++++++++++++++++++++++++ - src/mips/getcontext.S | 3 +-- - 2 files changed, 35 insertions(+), 2 deletions(-) - -Index: git/src/coredump/_UCD_internal.h -=================================================================== ---- git.orig/src/coredump/_UCD_internal.h -+++ git/src/coredump/_UCD_internal.h -@@ -44,6 +44,41 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE - - #include "libunwind_i.h" - -+#ifndef __GLIBC__ -+#include -+ -+#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; -Index: git/src/mips/getcontext.S -=================================================================== ---- git.orig/src/mips/getcontext.S -+++ git/src/mips/getcontext.S -@@ -24,12 +24,11 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - - #include "offsets.h" --#include - - .text - - #if _MIPS_SIM == _ABIO32 --# if __BYTE_ORDER == __BIG_ENDIAN -+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - # define OFFSET 4 - # else - # define OFFSET 0 diff --git a/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch b/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch deleted file mode 100644 index 673a5bb995..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-add-knobs-to-disable-enable-tests.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 459e471fcc33d300f7bbcdaf3e0dc338d9dc15b9 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 30 Apr 2016 16:56:34 +0000 -Subject: [PATCH] add knobs to disable/enable tests - -Some tests do not compile on musl libc -in general its good to have such a knob -since not all builds may want to enable -tests - -Upstream-Status: Pending - -Signed-off-by: Khem Raj ---- - Makefile.am | 6 +++++- - configure.ac | 12 ++++++++++-- - 2 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 6a3ed9e..0c29b3e 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -42,7 +42,11 @@ endif - - nodist_include_HEADERS = include/libunwind-common.h - --SUBDIRS = src tests -+SUBDIRS = src -+ -+if CONFIG_TESTS -+SUBDIRS += tests -+endif - - if CONFIG_DOCS - SUBDIRS += doc -diff --git a/configure.ac b/configure.ac -index 85d78f8..d362387 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -129,6 +129,10 @@ AC_ARG_ENABLE(documentation, - AS_HELP_STRING([--disable-documentation],[Disable generating the man pages]),, - [enable_documentation=yes]) - -+AC_ARG_ENABLE(tests, -+ AS_HELP_STRING([--disable-tests],[Disable building tests]),, -+ [enable_tests=yes]) -+ - AC_MSG_CHECKING([if we should build libunwind-setjmp]) - AC_MSG_RESULT([$enable_setjmp]) - -@@ -395,9 +399,13 @@ AM_CONDITIONAL([CONFIG_DOCS], [test x$enable_documentation = xyes]) - if test "x$enable_documentation" = "xyes"; then - AC_CONFIG_FILES(doc/Makefile doc/common.tex) - fi -+AM_CONDITIONAL([CONFIG_TESTS], [test x$enable_tests = xyes]) -+if test "x$enable_tests" = "xyes"; then -+ AC_CONFIG_FILES(tests/Makefile tests/check-namespace.sh) -+fi -+ - --AC_CONFIG_FILES(Makefile src/Makefile tests/Makefile tests/check-namespace.sh -- include/libunwind-common.h -+AC_CONFIG_FILES(Makefile src/Makefile include/libunwind-common.h - include/libunwind.h include/tdep/libunwind_i.h) - AC_CONFIG_FILES(src/unwind/libunwind.pc src/coredump/libunwind-coredump.pc - src/ptrace/libunwind-ptrace.pc src/setjmp/libunwind-setjmp.pc --- -1.8.3.1 - diff --git a/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch b/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch deleted file mode 100644 index 9aed419a12..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 04437142399662b576bd55a85485c6dcc14d0812 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 31 Dec 2015 06:44:07 +0000 -Subject: [PATCH] backtrace: Use only with glibc and uclibc - -backtrace API is glibc specific not linux specific -so make it behave so. - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - 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 5254708..8767b42 100644 ---- a/tests/test-coredump-unwind.c -+++ b/tests/test-coredump-unwind.c -@@ -57,7 +57,9 @@ - #include - - /* For SIGSEGV handler code */ -+#ifdef __GLIBC__ - #include -+#endif - #include - - #include -@@ -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.6.4 - diff --git a/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch b/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch deleted file mode 100644 index ca0641f5ac..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch +++ /dev/null @@ -1,248 +0,0 @@ -From e0eea53c77fce8537c58a072b684043507987bcc Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 9 Jul 2016 01:07:53 +0000 -Subject: [PATCH] ppc32: Consider ucontext mismatches between glibc and musl - -This helps in porting libunwind onto musl based systems -ptrace.h change is required again an error that surfaces -with musl - -/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/asm/ptrace.h:31:8: error: redefinition of 'struct pt_regs' - struct pt_regs { - ^~~~~~~ -In file included from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/user.h:11:0, - from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/procfs.h:9, - from ../../git/src/ptrace/_UPT_internal.h:40, - from ../../git/src/ptrace/_UPT_reg_offset.c:27: -/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/bits/user.h:1:8: note: originally defined here - struct pt_regs { - ^~~~~~~ - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - src/ppc32/Ginit.c | 6 +- - src/ppc32/ucontext_i.h | 158 ++++++++++++++++++++++--------------------- - src/ptrace/_UPT_reg_offset.c | 7 ++ - 3 files changed, 92 insertions(+), 79 deletions(-) - -diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c -index f2e6e82..617aaa1 100644 ---- a/src/ppc32/Ginit.c -+++ b/src/ppc32/Ginit.c -@@ -48,12 +48,12 @@ uc_addr (ucontext_t *uc, int reg) - void *addr; - - if ((unsigned) (reg - UNW_PPC32_R0) < 32) -- addr = &uc->uc_mcontext.uc_regs->gregs[reg - UNW_PPC32_R0]; -+ addr = &uc->GET_UC_REGS->gregs[reg - UNW_PPC32_R0]; - - else - if ( ((unsigned) (reg - UNW_PPC32_F0) < 32) && - ((unsigned) (reg - UNW_PPC32_F0) >= 0) ) -- addr = &uc->uc_mcontext.uc_regs->fpregs.fpregs[reg - UNW_PPC32_F0]; -+ addr = &uc->GET_UC_REGS->fpregs.fpregs[reg - UNW_PPC32_F0]; - - else - { -@@ -76,7 +76,7 @@ uc_addr (ucontext_t *uc, int reg) - default: - return NULL; - } -- addr = &uc->uc_mcontext.uc_regs->gregs[gregs_idx]; -+ addr = &uc->GET_UC_REGS->gregs[gregs_idx]; - } - return addr; - } -diff --git a/src/ppc32/ucontext_i.h b/src/ppc32/ucontext_i.h -index c6ba806..b79f15c 100644 ---- a/src/ppc32/ucontext_i.h -+++ b/src/ppc32/ucontext_i.h -@@ -46,83 +46,89 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - various structure members. */ - static ucontext_t dmy_ctxt UNUSED; - --#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[0] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[1] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[2] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[3] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[4] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[5] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[6] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[7] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[8] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[9] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[10] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[11] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[12] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[13] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[14] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[15] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[16] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[17] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[18] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[19] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[20] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[21] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[22] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[23] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[24] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[25] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[26] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[27] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[28] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[29] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[30] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[31] - (void *)&dmy_ctxt) -+#ifdef __GLIBC__ -+#define GET_UC_REGS uc_mcontext.uc_regs -+#else -+#define GET_UC_REGS uc_regs -+#endif -+ -+#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[0] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[1] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[2] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[3] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[4] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[5] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[6] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[7] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[8] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[9] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[10] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[11] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[12] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[13] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[14] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[15] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[16] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[17] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[18] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[19] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[20] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[21] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[22] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[23] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[24] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[25] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[26] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[27] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[28] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[29] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[30] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[31] - (void *)&dmy_ctxt) - --#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[MSR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CTR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[LINK_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[XER_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CCR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[SOFTE_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[TRAP_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DAR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DSISR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[RESULT_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[MSR_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CTR_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.GET_UC_REGS->gregs[LINK_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.GET_UC_REGS->gregs[XER_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CCR_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.GET_UC_REGS->gregs[SOFTE_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.GET_UC_REGS->gregs[TRAP_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DAR_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DSISR_IDX] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.GET_UC_REGS->gregs[RESULT_IDX] - (void *)&dmy_ctxt) - --#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[0] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[1] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[2] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[3] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[4] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[5] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[6] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[7] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[8] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[9] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[10] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[11] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[12] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[13] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[14] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[15] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[16] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[17] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[18] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[19] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[20] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[21] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[22] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[23] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[24] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[25] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[26] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[27] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[28] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[29] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[30] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[31] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[32] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[0] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[1] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[2] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[3] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[4] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[5] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[6] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[7] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[8] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[9] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[10] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[11] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[12] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[13] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[14] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[15] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[16] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[17] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[18] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[19] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[20] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[21] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[22] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[23] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[24] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[25] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[26] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[27] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[28] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[29] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[30] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[31] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[32] - (void *)&dmy_ctxt) - - #endif -diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c -index 68461a2..fcc43f7 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. */ - #include "_UPT_internal.h" - - #include -+#if !defined(__GLIBC__) -+# define pt_regs uapi_pt_regs -+#endif -+#include -+#if !defined(__GLIBC__) -+# undef pt_regs -+#endif - - #ifdef HAVE_ASM_PTRACE_OFFSETS_H - # include --- -1.8.3.1 - diff --git a/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch b/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch deleted file mode 100644 index 371013aaaa..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch +++ /dev/null @@ -1,54 +0,0 @@ -From f5df01655a4b76d4fe415747de581d94ac593e6a Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 22 Mar 2016 16:19:29 +0000 -Subject: [PATCH] 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 - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - 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 31f83ba..3aaa34e 100644 ---- a/src/x86/Gos-linux.c -+++ b/src/x86/Gos-linux.c -@@ -281,27 +281,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); -- sigreturn (sc); -- } -- else -- { -- Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip); -- setcontext (uc); -- } -+ *(volatile char *)0=0; - return -UNW_EINVAL; - } - #endif --- -1.8.3.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 new file mode 100644 index 0000000000..1b862dccb1 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0002-backtrace-Use-only-with-glibc-and-uclibc.patch @@ -0,0 +1,45 @@ +From b61446add7ae1c041266c2fa5ba2f51cb3b65d35 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 +--- + 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 + + /* For SIGSEGV handler code */ ++#ifdef __GLIBC__ + #include ++#endif + #include + + #include +@@ -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 new file mode 100644 index 0000000000..508ed6af38 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch @@ -0,0 +1,54 @@ +From f6866b9e4a6341c50eb1d923dbf48eca2ca40140 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 + +--- + 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 new file mode 100644 index 0000000000..124d0e00b1 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0004-Fix-build-on-mips-musl.patch @@ -0,0 +1,84 @@ +From 6bdab5cc8f1e2ec5f84fc9f59f1699a726980709 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 + +--- + 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 ++ ++#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 + + .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 new file mode 100644 index 0000000000..edaa822be1 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch @@ -0,0 +1,249 @@ +From 02919d74b1599979884f9cee466ed392d9fc4819 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 9 Jul 2016 01:07:53 +0000 +Subject: [PATCH 5/6] ppc32: Consider ucontext mismatches between glibc and + musl + +This helps in porting libunwind onto musl based systems +ptrace.h change is required again an error that surfaces +with musl + +/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/asm/ptrace.h:31:8: error: redefinition of 'struct pt_regs' + struct pt_regs { + ^~~~~~~ +In file included from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/user.h:11:0, + from /mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/sys/procfs.h:9, + from ../../git/src/ptrace/_UPT_internal.h:40, + from ../../git/src/ptrace/_UPT_reg_offset.c:27: +/mnt/oe/openembedded-core/build/tmp-musl/sysroots/qemuppc/usr/include/bits/user.h:1:8: note: originally defined here + struct pt_regs { + ^~~~~~~ + +Upstream-Status: Pending +Signed-off-by: Khem Raj + +--- + src/ppc32/Ginit.c | 6 +- + src/ppc32/ucontext_i.h | 158 ++++++++++++++++++----------------- + src/ptrace/_UPT_reg_offset.c | 7 ++ + 3 files changed, 92 insertions(+), 79 deletions(-) + +diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c +index ba30244..c5312d9 100644 +--- a/src/ppc32/Ginit.c ++++ b/src/ppc32/Ginit.c +@@ -48,12 +48,12 @@ uc_addr (ucontext_t *uc, int reg) + void *addr; + + if ((unsigned) (reg - UNW_PPC32_R0) < 32) +- addr = &uc->uc_mcontext.uc_regs->gregs[reg - UNW_PPC32_R0]; ++ addr = &uc->GET_UC_REGS->gregs[reg - UNW_PPC32_R0]; + + else + if ( ((unsigned) (reg - UNW_PPC32_F0) < 32) && + ((unsigned) (reg - UNW_PPC32_F0) >= 0) ) +- addr = &uc->uc_mcontext.uc_regs->fpregs.fpregs[reg - UNW_PPC32_F0]; ++ addr = &uc->GET_UC_REGS->fpregs.fpregs[reg - UNW_PPC32_F0]; + + else + { +@@ -76,7 +76,7 @@ uc_addr (ucontext_t *uc, int reg) + default: + return NULL; + } +- addr = &uc->uc_mcontext.uc_regs->gregs[gregs_idx]; ++ addr = &uc->GET_UC_REGS->gregs[gregs_idx]; + } + return addr; + } +diff --git a/src/ppc32/ucontext_i.h b/src/ppc32/ucontext_i.h +index c6ba806..b79f15c 100644 +--- a/src/ppc32/ucontext_i.h ++++ b/src/ppc32/ucontext_i.h +@@ -46,83 +46,89 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + various structure members. */ + static ucontext_t dmy_ctxt UNUSED; + +-#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[0] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[1] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[2] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[3] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[4] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[5] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[6] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[7] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[8] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[9] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[10] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[11] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[12] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[13] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[14] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[15] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[16] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[17] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[18] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[19] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[20] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[21] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[22] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[23] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[24] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[25] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[26] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[27] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[28] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[29] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[30] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[31] - (void *)&dmy_ctxt) ++#ifdef __GLIBC__ ++#define GET_UC_REGS uc_mcontext.uc_regs ++#else ++#define GET_UC_REGS uc_regs ++#endif ++ ++#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[0] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[1] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[2] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[3] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[4] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[5] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[6] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[7] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[8] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[9] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[10] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[11] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[12] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[13] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[14] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[15] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[16] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[17] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[18] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[19] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[20] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[21] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[22] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[23] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[24] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[25] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[26] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[27] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[28] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[29] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[30] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[31] - (void *)&dmy_ctxt) + +-#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[MSR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CTR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[LINK_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[XER_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CCR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[SOFTE_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[TRAP_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DAR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DSISR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[RESULT_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[MSR_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.GET_UC_REGS->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CTR_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.GET_UC_REGS->gregs[LINK_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.GET_UC_REGS->gregs[XER_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[CCR_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.GET_UC_REGS->gregs[SOFTE_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.GET_UC_REGS->gregs[TRAP_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DAR_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.GET_UC_REGS->gregs[DSISR_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.GET_UC_REGS->gregs[RESULT_IDX] - (void *)&dmy_ctxt) + +-#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[0] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[1] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[2] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[3] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[4] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[5] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[6] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[7] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[8] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[9] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[10] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[11] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[12] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[13] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[14] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[15] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[16] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[17] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[18] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[19] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[20] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[21] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[22] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[23] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[24] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[25] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[26] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[27] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[28] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[29] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[30] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[31] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[32] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[0] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[1] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[2] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[3] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[4] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[5] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[6] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[7] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[8] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[9] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[10] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[11] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[12] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[13] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[14] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[15] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[16] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[17] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[18] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[19] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[20] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[21] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[22] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[23] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[24] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[25] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[26] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[27] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[28] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[29] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[30] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[31] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.GET_UC_REGS->fpregs.fpregs[32] - (void *)&dmy_ctxt) + + #endif +diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c +index c82d1c9..6c31baa 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. */ + #include "_UPT_internal.h" + + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif ++#include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #ifdef HAVE_ASM_PTRACE_OFFSETS_H + # include +-- +2.20.1 + diff --git a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch b/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch new file mode 100644 index 0000000000..37ae8124cc --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch @@ -0,0 +1,32 @@ +From 7a4fd5933cc795df85cdd85168fe54fbaec4dcec Mon Sep 17 00:00:00 2001 +From: Christopher Larson +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 + +--- + 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/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch b/meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch deleted file mode 100644 index c8faca4724..0000000000 --- a/meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 24484e80b3e329c9edee1995e102f8612eedb79c Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Tue, 13 May 2014 23:32:27 +0200 -Subject: [PATCH] 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 - 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 -Signed-off-by: Martin Jansa - -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(-) - -Index: libunwind-1.2.1/acinclude.m4 -=================================================================== ---- libunwind-1.2.1.orig/acinclude.m4 -+++ libunwind-1.2.1/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) - ]) -Index: libunwind-1.2.1/include/libunwind_i.h -=================================================================== ---- libunwind-1.2.1.orig/include/libunwind_i.h -+++ libunwind-1.2.1/include/libunwind_i.h -@@ -116,6 +116,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE - (pthread_mutex_unlock != NULL ? pthread_mutex_unlock (l) : 0) - - #ifdef HAVE_ATOMIC_OPS_H -+# define AO_REQUIRE_CAS - # include - static inline int - cmpxchg_ptr (void *addr, void *old, void *new) diff --git a/meta/recipes-support/libunwind/libunwind/libunwind-1.1-x32.patch b/meta/recipes-support/libunwind/libunwind/libunwind-1.1-x32.patch deleted file mode 100644 index 32516464cd..0000000000 --- a/meta/recipes-support/libunwind/libunwind/libunwind-1.1-x32.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 506bd37bd580d7382d7c58257dac4b1e502a887c Mon Sep 17 00:00:00 2001 -From: Christopher Larson -Date: Tue, 13 Dec 2016 09:50:34 -0700 -Subject: [PATCH] Fix for X32 - -Apply patch to fix the X32 build from https://github.com/sjnewbury/x32. - -Upstream-Status: Pending -Signed-off-by: Christopher Larson ---- - 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 9e1acfc..8169d5a 100644 ---- a/src/x86_64/Gos-linux.c -+++ b/src/x86_64/Gos-linux.c -@@ -143,8 +143,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.8.0 - diff --git a/meta/recipes-support/libunwind/libunwind_1.2.1.bb b/meta/recipes-support/libunwind/libunwind_1.2.1.bb deleted file mode 100644 index c9239b695e..0000000000 --- a/meta/recipes-support/libunwind/libunwind_1.2.1.bb +++ /dev/null @@ -1,25 +0,0 @@ -require libunwind.inc - -SRC_URI[md5sum] = "06ba9e60d92fd6f55cd9dadb084df19e" -SRC_URI[sha256sum] = "3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb" - -SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \ - file://Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \ - file://0001-backtrace-Use-only-with-glibc-and-uclibc.patch \ - file://0001-x86-Stub-out-x86_local_resume.patch \ - file://0001-Fix-build-on-mips-musl.patch \ - file://0001-add-knobs-to-disable-enable-tests.patch \ - file://0001-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \ - file://libunwind-1.1-x32.patch \ - " - -SRC_URI_append_libc-musl = " file://musl-header-conflict.patch" -EXTRA_OECONF_append_libc-musl = " --disable-documentation --disable-tests --enable-static" - -# http://errors.yoctoproject.org/Errors/Details/20487/ -ARM_INSTRUCTION_SET_armv4 = "arm" -ARM_INSTRUCTION_SET_armv5 = "arm" - -LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" - -SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared" diff --git a/meta/recipes-support/libunwind/libunwind_1.3.1.bb b/meta/recipes-support/libunwind/libunwind_1.3.1.bb new file mode 100644 index 0000000000..037e04c3c0 --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind_1.3.1.bb @@ -0,0 +1,24 @@ +require libunwind.inc + +SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \ + file://0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \ + file://0002-backtrace-Use-only-with-glibc-and-uclibc.patch \ + file://0003-x86-Stub-out-x86_local_resume.patch \ + file://0004-Fix-build-on-mips-musl.patch \ + file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \ + file://0006-Fix-for-X32.patch \ + " +SRC_URI_append_libc-musl = " file://musl-header-conflict.patch" + +SRC_URI[md5sum] = "a04f69d66d8e16f8bf3ab72a69112cd6" +SRC_URI[sha256sum] = "43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8" + +EXTRA_OECONF_append_libc-musl = " --disable-documentation --disable-tests --enable-static" + +# http://errors.yoctoproject.org/Errors/Details/20487/ +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared" -- cgit 1.2.3-korg