All of lore.kernel.org
 help / color / mirror / Atom feed
From: Khem Raj <raj.khem@gmail.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 21/42] libunwind: Upgrade to 1.2rc1+
Date: Wed, 11 May 2016 10:35:24 -0700	[thread overview]
Message-ID: <a92169b3ee570ce15be6d4e1b6df873d2f264bac.1462987863.git.raj.khem@gmail.com> (raw)
In-Reply-To: <2e51e9b5fb3911436afc1becd5feb9351b896fa4.1462987863.git.raj.khem@gmail.com>
In-Reply-To: <cover.1462987863.git.raj.khem@gmail.com>

This helps in compiling with gcc6
drop patches backported to 1.1
remove musl conditional patches, they should work
on glibc too now

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...rf-opcodes-can-cause-references-beyond-th.patch |   29 -
 .../libunwind-1.1/0001-disable-tests.patch         |   31 -
 .../libunwind/libunwind-1.1/AArch64-port.patch     | 2529 --------------------
 ...k-failure-on-PowerPC-systems-with-Altivec.patch |   28 -
 ...-libunwind-to-libgcc_s-rather-than-libgcc.patch |   42 -
 .../Support-building-with-older-compilers.patch    |   72 -
 .../0001-Fix-build-on-mips-musl.patch              |   33 +-
 ...-backtrace-Use-only-with-glibc-and-uclibc.patch |    0
 .../0001-x86-Stub-out-x86_local_resume.patch       |    0
 ...Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch |    0
 meta/recipes-support/libunwind/libunwind_1.1.bb    |   24 -
 meta/recipes-support/libunwind/libunwind_git.bb    |   25 +
 12 files changed, 37 insertions(+), 2776 deletions(-)
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch
 delete mode 100644 meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch
 rename meta/recipes-support/libunwind/{libunwind-1.1 => libunwind}/0001-Fix-build-on-mips-musl.patch (68%)
 rename meta/recipes-support/libunwind/{libunwind-1.1 => libunwind}/0001-backtrace-Use-only-with-glibc-and-uclibc.patch (100%)
 rename meta/recipes-support/libunwind/{libunwind-1.1 => libunwind}/0001-x86-Stub-out-x86_local_resume.patch (100%)
 rename meta/recipes-support/libunwind/{libunwind-1.1 => libunwind}/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch (100%)
 delete mode 100644 meta/recipes-support/libunwind/libunwind_1.1.bb
 create mode 100644 meta/recipes-support/libunwind/libunwind_git.bb

diff --git a/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch b/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch
deleted file mode 100644
index af972f8..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 396b6c7ab737e2bff244d640601c436a26260ca1 Mon Sep 17 00:00:00 2001
-From: Arun Sharma <arun@sharma-home.net>
-Date: Fri, 19 Jun 2015 19:47:22 -0700
-Subject: [PATCH] Invalid dwarf opcodes can cause references beyond the end of
- the array.
-
-Upstream-Status: backport
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- include/dwarf_i.h |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/dwarf_i.h b/include/dwarf_i.h
-index 1e6231e..4a02a7d 100644
---- a/include/dwarf_i.h
-+++ b/include/dwarf_i.h
-@@ -20,7 +20,7 @@
- extern const uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH];
- /* REG is evaluated multiple times; it better be side-effects free!  */
- # define dwarf_to_unw_regnum(reg)					  \
--  (((reg) <= DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
-+  (((reg) < DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
- #endif
- 
- #ifdef UNW_LOCAL_ONLY
--- 
-1.7.9.5
-
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch b/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch
deleted file mode 100644
index 7309ffd..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/0001-disable-tests.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b07435a90bd636ee718e2238fb46c74a6dd5e069 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 22 Mar 2016 16:41:13 +0000
-Subject: [PATCH] disable tests
-
-Tests use getcontext() API which is
-not there on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Inappropriate [MUSL-only]
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index e24fe1e..15380e4 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -39,7 +39,7 @@ endif
- 
- nodist_include_HEADERS = include/libunwind-common.h
- 
--SUBDIRS = src tests doc
-+SUBDIRS = src doc
- 
- noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h	\
- 	include/compiler.h include/libunwind_i.h include/mempool.h	\
--- 
-1.8.3.1
-
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch b/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch
deleted file mode 100644
index 228ec32..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/AArch64-port.patch
+++ /dev/null
@@ -1,2529 +0,0 @@
-From ac6c0a6535975f1dc2da6e4e2766614baac2a14a Mon Sep 17 00:00:00 2001
-From: Yvan Roux <yvan.roux@linaro.org>
-Date: Sat, 11 May 2013 09:18:23 -0600
-Subject: [PATCH] AArch64 port.
-
-Upstream-Status: Backport
-
----
- Makefile.am                          |    6 
- README                               |    1 
- configure.ac                         |    6 
- include/libunwind-aarch64.h          |  187 ++++++++++++++++++++++
- include/libunwind.h.in               |    4 
- include/tdep-aarch64/dwarf-config.h  |   52 ++++++
- include/tdep-aarch64/jmpbuf.h        |   33 +++
- include/tdep-aarch64/libunwind_i.h   |  294 +++++++++++++++++++++++++++++++++++
- include/tdep/dwarf-config.h          |    4 
- include/tdep/jmpbuf.h                |    2 
- include/tdep/libunwind_i.h.in        |    4 
- src/Makefile.am                      |   39 ++++
- src/aarch64/Gcreate_addr_space.c     |   60 +++++++
- src/aarch64/Gget_proc_info.c         |   39 ++++
- src/aarch64/Gget_save_loc.c          |  100 +++++++++++
- src/aarch64/Gglobal.c                |   57 ++++++
- src/aarch64/Ginit.c                  |  187 ++++++++++++++++++++++
- src/aarch64/Ginit_local.c            |   55 ++++++
- src/aarch64/Ginit_remote.c           |   45 +++++
- src/aarch64/Gis_signal_frame.c       |   64 +++++++
- src/aarch64/Gregs.c                  |  113 +++++++++++++
- src/aarch64/Gresume.c                |  177 +++++++++++++++++++++
- src/aarch64/Gstep.c                  |  129 +++++++++++++++
- src/aarch64/Lcreate_addr_space.c     |    5 
- src/aarch64/Lget_proc_info.c         |    5 
- src/aarch64/Lget_save_loc.c          |    5 
- src/aarch64/Lglobal.c                |    5 
- src/aarch64/Linit.c                  |    5 
- src/aarch64/Linit_local.c            |    5 
- src/aarch64/Linit_remote.c           |    5 
- src/aarch64/Lis_signal_frame.c       |    5 
- src/aarch64/Lregs.c                  |    5 
- src/aarch64/Lresume.c                |    5 
- src/aarch64/Lstep.c                  |    5 
- src/aarch64/gen-offsets.c            |   68 ++++++++
- src/aarch64/init.h                   |  127 +++++++++++++++
- src/aarch64/is_fpreg.c               |   32 +++
- src/aarch64/offsets.h                |   49 +++++
- src/aarch64/regname.c                |  106 ++++++++++++
- src/aarch64/siglongjmp.S             |   12 +
- src/aarch64/unwind_i.h               |   43 +++++
- src/coredump/_UCD_access_reg_linux.c |    5 
- src/ptrace/_UPT_reg_offset.c         |   36 ++++
- 43 files changed, 2184 insertions(+), 7 deletions(-)
- create mode 100644 include/libunwind-aarch64.h
- create mode 100644 include/tdep-aarch64/dwarf-config.h
- create mode 100644 include/tdep-aarch64/jmpbuf.h
- create mode 100644 include/tdep-aarch64/libunwind_i.h
- create mode 100644 src/aarch64/Gcreate_addr_space.c
- create mode 100644 src/aarch64/Gget_proc_info.c
- create mode 100644 src/aarch64/Gget_save_loc.c
- create mode 100644 src/aarch64/Gglobal.c
- create mode 100644 src/aarch64/Ginit.c
- create mode 100644 src/aarch64/Ginit_local.c
- create mode 100644 src/aarch64/Ginit_remote.c
- create mode 100644 src/aarch64/Gis_signal_frame.c
- create mode 100644 src/aarch64/Gregs.c
- create mode 100644 src/aarch64/Gresume.c
- create mode 100644 src/aarch64/Gstep.c
- create mode 100644 src/aarch64/Lcreate_addr_space.c
- create mode 100644 src/aarch64/Lget_proc_info.c
- create mode 100644 src/aarch64/Lget_save_loc.c
- create mode 100644 src/aarch64/Lglobal.c
- create mode 100644 src/aarch64/Linit.c
- create mode 100644 src/aarch64/Linit_local.c
- create mode 100644 src/aarch64/Linit_remote.c
- create mode 100644 src/aarch64/Lis_signal_frame.c
- create mode 100644 src/aarch64/Lregs.c
- create mode 100644 src/aarch64/Lresume.c
- create mode 100644 src/aarch64/Lstep.c
- create mode 100644 src/aarch64/gen-offsets.c
- create mode 100644 src/aarch64/init.h
- create mode 100644 src/aarch64/is_fpreg.c
- create mode 100644 src/aarch64/offsets.h
- create mode 100644 src/aarch64/regname.c
- create mode 100644 src/aarch64/siglongjmp.S
- create mode 100644 src/aarch64/unwind_i.h
-
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,6 +2,9 @@ include_HEADERS = include/libunwind-dyna
-     include/libunwind-ptrace.h \
-     include/libunwind-coredump.h
- 
-+if ARCH_AARCH64
-+include_HEADERS += include/libunwind-aarch64.h
-+endif
- if ARCH_ARM
- include_HEADERS += include/libunwind-arm.h
- endif
-@@ -41,6 +44,9 @@ SUBDIRS = src tests doc
- noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h	\
- 	include/compiler.h include/libunwind_i.h include/mempool.h	\
- 	include/remote.h						\
-+	include/tdep-aarch64/dwarf-config.h				\
-+	include/tdep-aarch64/jmpbuf.h					\
-+	include/tdep-aarch64/libunwind_i.h				\
- 	include/tdep-arm/dwarf-config.h	include/tdep-arm/ex_tables.h	\
- 	include/tdep-arm/jmpbuf.h include/tdep-arm/libunwind_i.h	\
- 	include/tdep-ia64/jmpbuf.h include/tdep-ia64/rse.h 		\
---- a/README
-+++ b/README
-@@ -9,6 +9,7 @@ several architecture/operating-system co
-  Linux/IA-64:	Fully tested and supported.
-  Linux/PARISC:	Works well, but C library missing unwind-info.
-  HP-UX/IA-64:	Mostly works but known to have some serious limitations.
-+ Linux/AArch64:	Newly added.
-  Linux/PPC64:	Newly added.
-  Linux/SuperH:	Newly added.
-  FreeBSD/i386:	Newly added.
---- a/configure.ac
-+++ b/configure.ac
-@@ -104,7 +104,7 @@ SET_ARCH([$target_cpu],[target_arch])
- 
- AC_ARG_ENABLE(coredump,
- 	AS_HELP_STRING([--enable-coredump],[building libunwind-coredump library]),,
--        [AS_CASE([$host_arch], [arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])]
-+        [AS_CASE([$host_arch], [aarch64*|arm*|mips*|sh*|x86*], [enable_coredump=yes], [enable_coredump=no])]
- )
- 
- AC_MSG_CHECKING([if we should build libunwind-coredump])
-@@ -121,6 +121,7 @@ AC_MSG_RESULT([$target_os])
- 
- AM_CONDITIONAL(BUILD_COREDUMP, test x$enable_coredump = xyes)
- AM_CONDITIONAL(REMOTE_ONLY, test x$target_arch != x$host_arch)
-+AM_CONDITIONAL(ARCH_AARCH64, test x$target_arch = xaarch64)
- AM_CONDITIONAL(ARCH_ARM, test x$target_arch = xarm)
- AM_CONDITIONAL(ARCH_IA64, test x$target_arch = xia64)
- AM_CONDITIONAL(ARCH_HPPA, test x$target_arch = xhppa)
-@@ -137,7 +138,7 @@ AM_CONDITIONAL(OS_FREEBSD, expr x$target
- AC_MSG_CHECKING([for ELF helper width])
- case "${target_arch}" in
- (arm|hppa|ppc32|x86|sh) use_elf32=yes; AC_MSG_RESULT([32]);;
--(ia64|ppc64|x86_64)    use_elf64=yes; AC_MSG_RESULT([64]);;
-+(aarch64|ia64|ppc64|x86_64)    use_elf64=yes; AC_MSG_RESULT([64]);;
- (mips)                 use_elfxx=yes; AC_MSG_RESULT([xx]);;
- *)                     AC_MSG_ERROR([Unknown ELF target: ${target_arch}])
- esac
-@@ -186,6 +187,7 @@ AS_HELP_STRING([--enable-cxx-exceptions]
- # C++ exception handling doesn't work too well on x86
- case $target_arch in
-   x86*) enable_cxx_exceptions=no;;
-+  aarch64*) enable_cxx_exceptions=no;;
-   arm*) enable_cxx_exceptions=no;;
-   mips*) enable_cxx_exceptions=no;;
-   *) enable_cxx_exceptions=yes;;
---- /dev/null
-+++ b/include/libunwind-aarch64.h
-@@ -0,0 +1,187 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2001-2004 Hewlett-Packard Co
-+	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#ifndef LIBUNWIND_H
-+#define LIBUNWIND_H
-+
-+#if defined(__cplusplus) || defined(c_plusplus)
-+extern "C" {
-+#endif
-+
-+#include <inttypes.h>
-+#include <stddef.h>
-+#include <ucontext.h>
-+
-+#define UNW_TARGET	aarch64
-+#define UNW_TARGET_AARCH64	1
-+
-+#define _U_TDEP_QP_TRUE	0	/* see libunwind-dynamic.h  */
-+
-+/* This needs to be big enough to accommodate "struct cursor", while
-+   leaving some slack for future expansion.  Changing this value will
-+   require recompiling all users of this library.  Stack allocation is
-+   relatively cheap and unwind-state copying is relatively rare, so we
-+   want to err on making it rather too big than too small.  */
-+
-+#define UNW_TDEP_CURSOR_LEN	4096
-+
-+typedef uint64_t unw_word_t;
-+typedef int64_t unw_sword_t;
-+
-+typedef long double unw_tdep_fpreg_t;
-+
-+typedef struct
-+  {
-+    /* no aarch64-specific auxiliary proc-info */
-+  }
-+unw_tdep_proc_info_t;
-+
-+typedef enum
-+  {
-+    /* 64-bit general registers.  */
-+    UNW_AARCH64_X0,
-+    UNW_AARCH64_X1,
-+    UNW_AARCH64_X2,
-+    UNW_AARCH64_X3,
-+    UNW_AARCH64_X4,
-+    UNW_AARCH64_X5,
-+    UNW_AARCH64_X6,
-+    UNW_AARCH64_X7,
-+    UNW_AARCH64_X8,
-+
-+    /* Temporary registers.  */
-+    UNW_AARCH64_X9,
-+    UNW_AARCH64_X10,
-+    UNW_AARCH64_X11,
-+    UNW_AARCH64_X12,
-+    UNW_AARCH64_X13,
-+    UNW_AARCH64_X14,
-+    UNW_AARCH64_X15,
-+
-+    /* Intra-procedure-call temporary registers.  */
-+    UNW_AARCH64_X16,
-+    UNW_AARCH64_X17,
-+
-+    /* Callee-saved registers.  */
-+    UNW_AARCH64_X18,
-+    UNW_AARCH64_X19,
-+    UNW_AARCH64_X20,
-+    UNW_AARCH64_X21,
-+    UNW_AARCH64_X22,
-+    UNW_AARCH64_X23,
-+    UNW_AARCH64_X24,
-+    UNW_AARCH64_X25,
-+    UNW_AARCH64_X26,
-+    UNW_AARCH64_X27,
-+    UNW_AARCH64_X28,
-+
-+    /* 64-bit frame pointer.  */
-+    UNW_AARCH64_X29,
-+
-+    /* 64-bit link register.  */
-+    UNW_AARCH64_X30,
-+
-+    /* 64-bit stack pointer.  */
-+    UNW_AARCH64_SP =  31,
-+    UNW_AARCH64_PC,
-+    UNW_AARCH64_PSTATE,
-+
-+    /* 128-bit FP/Advanced SIMD registers.  */
-+    UNW_AARCH64_V0 = 64,
-+    UNW_AARCH64_V1,
-+    UNW_AARCH64_V2,
-+    UNW_AARCH64_V3,
-+    UNW_AARCH64_V4,
-+    UNW_AARCH64_V5,
-+    UNW_AARCH64_V6,
-+    UNW_AARCH64_V7,
-+    UNW_AARCH64_V8,
-+    UNW_AARCH64_V9,
-+    UNW_AARCH64_V10,
-+    UNW_AARCH64_V11,
-+    UNW_AARCH64_V12,
-+    UNW_AARCH64_V13,
-+    UNW_AARCH64_V14,
-+    UNW_AARCH64_V15,
-+    UNW_AARCH64_V16,
-+    UNW_AARCH64_V17,
-+    UNW_AARCH64_V18,
-+    UNW_AARCH64_V19,
-+    UNW_AARCH64_V20,
-+    UNW_AARCH64_V21,
-+    UNW_AARCH64_V22,
-+    UNW_AARCH64_V23,
-+    UNW_AARCH64_V24,
-+    UNW_AARCH64_V25,
-+    UNW_AARCH64_V26,
-+    UNW_AARCH64_V27,
-+    UNW_AARCH64_V28,
-+    UNW_AARCH64_V29,
-+    UNW_AARCH64_V30,
-+    UNW_AARCH64_V31,
-+
-+    UNW_AARCH64_FPSR,
-+    UNW_AARCH64_FPCR,
-+
-+    /* For AArch64, the CFA is the value of SP (x31) at the call site of the
-+       previous frame.  */
-+    UNW_AARCH64_CFA = UNW_AARCH64_SP,
-+
-+    UNW_TDEP_LAST_REG = UNW_AARCH64_FPCR,
-+
-+    UNW_TDEP_IP = UNW_AARCH64_X30,
-+    UNW_TDEP_SP = UNW_AARCH64_SP,
-+    UNW_TDEP_EH = UNW_AARCH64_X0,
-+
-+  }
-+aarch64_regnum_t;
-+
-+/* Use R0 through R3 to pass exception handling information.  */
-+#define UNW_TDEP_NUM_EH_REGS	4
-+
-+typedef struct unw_tdep_save_loc
-+  {
-+    /* Additional target-dependent info on a save location.  */
-+  }
-+unw_tdep_save_loc_t;
-+
-+
-+/* On AArch64, we can directly use ucontext_t as the unwind context.  */
-+typedef ucontext_t unw_tdep_context_t;
-+
-+#include "libunwind-common.h"
-+#include "libunwind-dynamic.h"
-+
-+#define unw_tdep_getcontext(uc)         (getcontext (uc), 0)
-+#define unw_tdep_is_fpreg		UNW_ARCH_OBJ(is_fpreg)
-+
-+extern int unw_tdep_is_fpreg (int);
-+
-+#if defined(__cplusplus) || defined(c_plusplus)
-+}
-+#endif
-+
-+#endif /* LIBUNWIND_H */
---- a/include/libunwind.h.in
-+++ b/include/libunwind.h.in
-@@ -3,7 +3,9 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
--#if defined __arm__
-+#if defined __aarch64__
-+#include "libunwind-aarch64.h"
-+#elif defined __arm__
- # include "libunwind-arm.h"
- #elif defined __hppa__
- # include "libunwind-hppa.h"
---- /dev/null
-+++ b/include/tdep-aarch64/dwarf-config.h
-@@ -0,0 +1,52 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#ifndef dwarf_config_h
-+#define dwarf_config_h
-+
-+/* This matches the value udes by GCC (see
-+   gcc/config/aarch64/aarch64.h:DWARF_FRAME_REGISTERS.  */
-+#define DWARF_NUM_PRESERVED_REGS	97
-+
-+/* Return TRUE if the ADDR_SPACE uses big-endian byte-order.  */
-+#define dwarf_is_big_endian(addr_space)	0
-+
-+#define dwarf_to_unw_regnum(reg) (((reg) <= UNW_AARCH64_V31) ? (reg) : 0)
-+
-+/* Convert a pointer to a dwarf_cursor structure to a pointer to
-+   unw_cursor_t.  */
-+#define dwarf_to_cursor(c)	((unw_cursor_t *) (c))
-+
-+typedef struct dwarf_loc
-+  {
-+    unw_word_t val;
-+#ifndef UNW_LOCAL_ONLY
-+    unw_word_t type;		/* see DWARF_LOC_TYPE_* macros.  */
-+#endif
-+  }
-+dwarf_loc_t;
-+
-+#endif /* dwarf_config_h */
---- /dev/null
-+++ b/include/tdep-aarch64/jmpbuf.h
-@@ -0,0 +1,33 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+/* Use glibc's jump-buffer indices; NPTL peeks at SP: */
-+
-+/* FIXME for AArch64  */
-+
-+#define JB_SP		13
-+#define JB_RP		14
-+#define JB_MASK_SAVED	15
-+#define JB_MASK		16
---- /dev/null
-+++ b/include/tdep-aarch64/libunwind_i.h
-@@ -0,0 +1,294 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2001-2005 Hewlett-Packard Co
-+	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#ifndef AARCH64_LIBUNWIND_I_H
-+#define AARCH64_LIBUNWIND_I_H
-+
-+/* Target-dependent definitions that are internal to libunwind but need
-+   to be shared with target-independent code.  */
-+
-+#include <stdlib.h>
-+#include <libunwind.h>
-+
-+#include "elf64.h"
-+#include "mempool.h"
-+#include "dwarf.h"
-+
-+typedef struct
-+  {
-+    /* no aarch64-specific fast trace */
-+  }
-+unw_tdep_frame_t;
-+
-+#ifdef UNW_LOCAL_ONLY
-+
-+typedef unw_word_t aarch64_loc_t;
-+
-+#else /* !UNW_LOCAL_ONLY */
-+
-+typedef struct aarch64_loc
-+  {
-+    unw_word_t w0, w1;
-+  }
-+aarch64_loc_t;
-+
-+#endif /* !UNW_LOCAL_ONLY */
-+
-+struct unw_addr_space
-+  {
-+    struct unw_accessors acc;
-+    int big_endian;
-+    unw_caching_policy_t caching_policy;
-+#ifdef HAVE_ATOMIC_OPS_H
-+    AO_t cache_generation;
-+#else
-+    uint32_t cache_generation;
-+#endif
-+    unw_word_t dyn_generation;          /* see dyn-common.h */
-+    unw_word_t dyn_info_list_addr;	/* (cached) dyn_info_list_addr */
-+    struct dwarf_rs_cache global_cache;
-+    struct unw_debug_frame_list *debug_frames;
-+   };
-+
-+struct cursor
-+  {
-+    struct dwarf_cursor dwarf;          /* must be first */
-+    enum
-+      {
-+        AARCH64_SCF_NONE,
-+        AARCH64_SCF_LINUX_RT_SIGFRAME,
-+      }
-+    sigcontext_format;
-+    unw_word_t sigcontext_addr;
-+    unw_word_t sigcontext_sp;
-+    unw_word_t sigcontext_pc;
-+  };
-+
-+#define DWARF_GET_LOC(l)        ((l).val)
-+
-+#ifdef UNW_LOCAL_ONLY
-+# define DWARF_NULL_LOC         DWARF_LOC (0, 0)
-+# define DWARF_IS_NULL_LOC(l)   (DWARF_GET_LOC (l) == 0)
-+# define DWARF_LOC(r, t)        ((dwarf_loc_t) { .val = (r) })
-+# define DWARF_IS_REG_LOC(l)    0
-+# define DWARF_REG_LOC(c,r)     (DWARF_LOC((unw_word_t)                      \
-+                                 tdep_uc_addr((c)->as_arg, (r)), 0))
-+# define DWARF_MEM_LOC(c,m)     DWARF_LOC ((m), 0)
-+# define DWARF_FPREG_LOC(c,r)   (DWARF_LOC((unw_word_t)                      \
-+                                 tdep_uc_addr((c)->as_arg, (r)), 0))
-+
-+static inline int
-+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *val = *(unw_fpreg_t *) DWARF_GET_LOC (loc);
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *(unw_fpreg_t *) DWARF_GET_LOC (loc) = val;
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *val = *(unw_word_t *) DWARF_GET_LOC (loc);
-+  return 0;
-+}
-+
-+static inline int
-+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
-+{
-+  if (!DWARF_GET_LOC (loc))
-+    return -1;
-+  *(unw_word_t *) DWARF_GET_LOC (loc) = val;
-+  return 0;
-+}
-+
-+#else /* !UNW_LOCAL_ONLY */
-+# define DWARF_LOC_TYPE_FP      (1 << 0)
-+# define DWARF_LOC_TYPE_REG     (1 << 1)
-+# define DWARF_NULL_LOC         DWARF_LOC (0, 0)
-+# define DWARF_IS_NULL_LOC(l)                                           \
-+                ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; })
-+# define DWARF_LOC(r, t)        ((dwarf_loc_t) { .val = (r), .type = (t) })
-+# define DWARF_IS_REG_LOC(l)    (((l).type & DWARF_LOC_TYPE_REG) != 0)
-+# define DWARF_IS_FP_LOC(l)     (((l).type & DWARF_LOC_TYPE_FP) != 0)
-+# define DWARF_REG_LOC(c,r)     DWARF_LOC((r), DWARF_LOC_TYPE_REG)
-+# define DWARF_MEM_LOC(c,m)     DWARF_LOC ((m), 0)
-+# define DWARF_FPREG_LOC(c,r)   DWARF_LOC((r), (DWARF_LOC_TYPE_REG      \
-+                                                | DWARF_LOC_TYPE_FP))
-+
-+static inline int
-+dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
-+{
-+  char *valp = (char *) &val;
-+  unw_word_t addr;
-+  int ret;
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
-+                                       val, 0, c->as_arg);
-+
-+  addr = DWARF_GET_LOC (loc);
-+  if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
-+                                       0, c->as_arg)) < 0)
-+    return ret;
-+
-+  return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1, 0,
-+                                   c->as_arg);
-+}
-+
-+static inline int
-+dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
-+{
-+  char *valp = (char *) &val;
-+  unw_word_t addr;
-+  int ret;
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
-+                                       &val, 1, c->as_arg);
-+
-+  addr = DWARF_GET_LOC (loc);
-+  if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
-+                                       1, c->as_arg)) < 0)
-+    return ret;
-+
-+  return (*c->as->acc.access_mem) (c->as, addr + 4, (unw_word_t *) valp + 1,
-+                                   1, c->as_arg);
-+}
-+
-+static inline int
-+dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
-+{
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  /* If a code-generator were to save a value of type unw_word_t in a
-+     floating-point register, we would have to support this case.  I
-+     suppose it could happen with MMX registers, but does it really
-+     happen?  */
-+  assert (!DWARF_IS_FP_LOC (loc));
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
-+                                     0, c->as_arg);
-+  else
-+    return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
-+                                     0, c->as_arg);
-+}
-+
-+static inline int
-+dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
-+{
-+  if (DWARF_IS_NULL_LOC (loc))
-+    return -UNW_EBADREG;
-+
-+  /* If a code-generator were to save a value of type unw_word_t in a
-+     floating-point register, we would have to support this case.  I
-+     suppose it could happen with MMX registers, but does it really
-+     happen?  */
-+  assert (!DWARF_IS_FP_LOC (loc));
-+
-+  if (DWARF_IS_REG_LOC (loc))
-+    return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
-+                                     1, c->as_arg);
-+  else
-+    return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
-+                                     1, c->as_arg);
-+}
-+
-+#endif /* !UNW_LOCAL_ONLY */
-+
-+
-+
-+#define tdep_getcontext_trace           unw_getcontext
-+#define tdep_init_done			UNW_OBJ(init_done)
-+#define tdep_init			UNW_OBJ(init)
-+/* Platforms that support UNW_INFO_FORMAT_TABLE need to define
-+   tdep_search_unwind_table.  */
-+#define tdep_search_unwind_table	dwarf_search_unwind_table
-+#define tdep_find_unwind_table	        dwarf_find_unwind_table
-+#define tdep_uc_addr			UNW_OBJ(uc_addr)
-+#define tdep_get_elf_image		UNW_ARCH_OBJ(get_elf_image)
-+#define tdep_access_reg			UNW_OBJ(access_reg)
-+#define tdep_access_fpreg		UNW_OBJ(access_fpreg)
-+#define tdep_fetch_frame(c,ip,n)	do {} while(0)
-+#define tdep_cache_frame(c,rs)		do {} while(0)
-+#define tdep_reuse_frame(c,rs)		do {} while(0)
-+#define tdep_stash_frame(c,rs)		do {} while(0)
-+#define tdep_trace(cur,addr,n)		(-UNW_ENOINFO)
-+
-+#ifdef UNW_LOCAL_ONLY
-+# define tdep_find_proc_info(c,ip,n)                            \
-+        dwarf_find_proc_info((c)->as, (ip), &(c)->pi, (n),      \
-+                                       (c)->as_arg)
-+# define tdep_put_unwind_info(as,pi,arg)                \
-+        dwarf_put_unwind_info((as), (pi), (arg))
-+#else
-+# define tdep_find_proc_info(c,ip,n)                                    \
-+        (*(c)->as->acc.find_proc_info)((c)->as, (ip), &(c)->pi, (n),    \
-+                                       (c)->as_arg)
-+# define tdep_put_unwind_info(as,pi,arg)                \
-+        (*(as)->acc.put_unwind_info)((as), (pi), (arg))
-+#endif
-+
-+#define tdep_get_as(c)                  ((c)->dwarf.as)
-+#define tdep_get_as_arg(c)              ((c)->dwarf.as_arg)
-+#define tdep_get_ip(c)                  ((c)->dwarf.ip)
-+#define tdep_big_endian(as)             ((as)->big_endian)
-+
-+extern int tdep_init_done;
-+
-+extern void tdep_init (void);
-+extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip,
-+				     unw_dyn_info_t *di, unw_proc_info_t *pi,
-+				     int need_unwind_info, void *arg);
-+extern void *tdep_uc_addr (unw_tdep_context_t *uc, int reg);
-+extern int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip,
-+			       unsigned long *segbase, unsigned long *mapoff,
-+			       char *path, size_t pathlen);
-+extern int tdep_access_reg (struct cursor *c, unw_regnum_t reg,
-+			    unw_word_t *valp, int write);
-+extern int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg,
-+			      unw_fpreg_t *valp, int write);
-+
-+#endif /* AARCH64_LIBUNWIND_I_H */
---- a/include/tdep/dwarf-config.h
-+++ b/include/tdep/dwarf-config.h
-@@ -1,7 +1,9 @@
- /* Provide a real file - not a symlink - as it would cause multiarch conflicts
-    when multiple different arch releases are installed simultaneously.  */
- 
--#if defined __arm__
-+#if defined __aarch64__
-+# include "tdep-aarch64/dwarf-config.h"
-+#elif defined __arm__
- # include "tdep-arm/dwarf-config.h"
- #elif defined __hppa__
- # include "tdep-hppa/dwarf-config.h"
---- a/include/tdep/jmpbuf.h
-+++ b/include/tdep/jmpbuf.h
-@@ -3,6 +3,8 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
-+#if defined __aarch64__
-+# include "tdep-aarch64/jmpbuf.h"
- #if defined __arm__
- # include "tdep-arm/jmpbuf.h"
- #elif defined __hppa__
---- a/include/tdep/libunwind_i.h.in
-+++ b/include/tdep/libunwind_i.h.in
-@@ -3,7 +3,9 @@
- 
- #ifndef UNW_REMOTE_ONLY
- 
--#if defined __arm__
-+#if defined __aarch64__
-+# include "tdep-aarch64/libunwind_i.h"
-+#elif defined __arm__
- # include "tdep-arm/libunwind_i.h"
- #elif defined __hppa__
- # include "tdep-hppa/libunwind_i.h"
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -170,6 +170,28 @@ libunwind_elfxx_la_SOURCES = elfxx.c
- noinst_LTLIBRARIES += $(LIBUNWIND_ELF)
- libunwind_la_LIBADD += $(LIBUNWIND_ELF)
- 
-+# The list of files that go into libunwind and libunwind-aarch64:
-+noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h
-+libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common)	    \
-+	aarch64/is_fpreg.c aarch64/regname.c
-+
-+# The list of files that go into libunwind:
-+libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common)	    \
-+	$(libunwind_la_SOURCES_local)					    \
-+	aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c 		    \
-+	aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c	    \
-+	aarch64/Linit_local.c aarch64/Linit_remote.c 			    \
-+	aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c 	    \
-+	aarch64/Lstep.c
-+
-+libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
-+	$(libunwind_la_SOURCES_generic)					      \
-+	aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c 		      \
-+	aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c 	      \
-+	aarch64/Ginit_local.c aarch64/Ginit_remote.c			      \
-+	aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c	      \
-+	aarch64/Gstep.c
-+
- # The list of files that go into libunwind and libunwind-arm:
- noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
- libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common)	    \
-@@ -418,6 +440,18 @@ if OS_FREEBSD
-  libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c
- endif
- 
-+if ARCH_AARCH64
-+ lib_LTLIBRARIES += libunwind-aarch64.la
-+ libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64)
-+ libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64)
-+ libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
-+ libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la
-+ libunwind_aarch64_la_LIBADD += libunwind-elf64.la
-+if !REMOTE_ONLY
-+ libunwind_aarch64_la_LIBADD += libunwind.la -lc
-+endif
-+ libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S
-+else
- if ARCH_ARM
-  lib_LTLIBRARIES += libunwind-arm.la
-  libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm)
-@@ -545,6 +579,7 @@ endif # ARCH_MIPS
- endif # ARCH_HPPA
- endif # ARCH_IA64
- endif # ARCH_ARM
-+endif # ARCH_AARCH64
- 
- # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
- # at the end.
-@@ -567,7 +602,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -I
- AM_CCASFLAGS = $(AM_CPPFLAGS)
- noinst_HEADERS += unwind/unwind-internal.h
- 
--EXTRA_DIST =	$(libunwind_la_SOURCES_arm)			\
-+EXTRA_DIST =	$(libunwind_la_SOURCES_aarch64)			\
-+		$(libunwind_la_SOURCES_arm)			\
- 		$(libunwind_la_SOURCES_hppa)			\
- 		$(libunwind_la_SOURCES_ia64)			\
- 		$(libunwind_la_SOURCES_mips)			\
-@@ -579,6 +615,7 @@ EXTRA_DIST =	$(libunwind_la_SOURCES_arm)
- 		$(libunwind_la_SOURCES_common)			\
- 		$(libunwind_la_SOURCES_local)			\
- 		$(libunwind_la_SOURCES_generic)			\
-+		$(libunwind_aarch64_la_SOURCES_aarch64)		\
- 		$(libunwind_arm_la_SOURCES_arm)			\
- 		$(libunwind_hppa_la_SOURCES_hppa)		\
- 		$(libunwind_ia64_la_SOURCES_ia64)		\
---- /dev/null
-+++ b/src/aarch64/Gcreate_addr_space.c
-@@ -0,0 +1,60 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include <string.h>
-+#include <stdlib.h>
-+
-+#include "unwind_i.h"
-+
-+PROTECTED unw_addr_space_t
-+unw_create_addr_space (unw_accessors_t *a, int byte_order)
-+{
-+#ifdef UNW_LOCAL_ONLY
-+  return NULL;
-+#else
-+  unw_addr_space_t as;
-+
-+  /* AArch64 supports little-endian and big-endian. */
-+  if (byte_order != 0 && byte_order != __LITTLE_ENDIAN
-+      && byte_order != __BIG_ENDIAN)
-+    return NULL;
-+
-+  as = malloc (sizeof (*as));
-+  if (!as)
-+    return NULL;
-+
-+  memset (as, 0, sizeof (*as));
-+
-+  as->acc = *a;
-+
-+  /* Default to little-endian for AArch64. */
-+  if (byte_order == 0 || byte_order == __LITTLE_ENDIAN)
-+    as->big_endian = 0;
-+  else
-+    as->big_endian = 1;
-+
-+  return as;
-+#endif
-+}
---- /dev/null
-+++ b/src/aarch64/Gget_proc_info.c
-@@ -0,0 +1,39 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+
-+  ret = dwarf_make_proc_info (&c->dwarf);
-+  if (ret < 0)
-+    return ret;
-+
-+  *pi = c->dwarf.pi;
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/Gget_save_loc.c
-@@ -0,0 +1,100 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  dwarf_loc_t loc;
-+
-+  switch (reg)
-+    {
-+    case UNW_AARCH64_X0:
-+    case UNW_AARCH64_X1:
-+    case UNW_AARCH64_X2:
-+    case UNW_AARCH64_X3:
-+    case UNW_AARCH64_X4:
-+    case UNW_AARCH64_X5:
-+    case UNW_AARCH64_X6:
-+    case UNW_AARCH64_X7:
-+    case UNW_AARCH64_X8:
-+    case UNW_AARCH64_X9:
-+    case UNW_AARCH64_X10:
-+    case UNW_AARCH64_X11:
-+    case UNW_AARCH64_X12:
-+    case UNW_AARCH64_X13:
-+    case UNW_AARCH64_X14:
-+    case UNW_AARCH64_X15:
-+    case UNW_AARCH64_X16:
-+    case UNW_AARCH64_X17:
-+    case UNW_AARCH64_X18:
-+    case UNW_AARCH64_X19:
-+    case UNW_AARCH64_X20:
-+    case UNW_AARCH64_X21:
-+    case UNW_AARCH64_X22:
-+    case UNW_AARCH64_X23:
-+    case UNW_AARCH64_X24:
-+    case UNW_AARCH64_X25:
-+    case UNW_AARCH64_X26:
-+    case UNW_AARCH64_X27:
-+    case UNW_AARCH64_X28:
-+    case UNW_AARCH64_X29:
-+    case UNW_AARCH64_X30:
-+    case UNW_AARCH64_SP:
-+    case UNW_AARCH64_PC:
-+    case UNW_AARCH64_PSTATE:
-+      loc = c->dwarf.loc[reg];
-+      break;
-+
-+    default:
-+      loc = DWARF_NULL_LOC;	/* default to "not saved" */
-+      break;
-+    }
-+
-+  memset (sloc, 0, sizeof (*sloc));
-+
-+  if (DWARF_IS_NULL_LOC (loc))
-+    {
-+      sloc->type = UNW_SLT_NONE;
-+      return 0;
-+    }
-+
-+#if !defined(UNW_LOCAL_ONLY)
-+  if (DWARF_IS_REG_LOC (loc))
-+    {
-+      sloc->type = UNW_SLT_REG;
-+      sloc->u.regnum = DWARF_GET_LOC (loc);
-+    }
-+  else
-+#endif
-+    {
-+      sloc->type = UNW_SLT_MEMORY;
-+      sloc->u.addr = DWARF_GET_LOC (loc);
-+    }
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/Gglobal.c
-@@ -0,0 +1,57 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+#include "dwarf_i.h"
-+
-+HIDDEN define_lock (aarch64_lock);
-+HIDDEN int tdep_init_done;
-+
-+HIDDEN void
-+tdep_init (void)
-+{
-+  intrmask_t saved_mask;
-+
-+  sigfillset (&unwi_full_mask);
-+
-+  lock_acquire (&aarch64_lock, saved_mask);
-+  {
-+    if (tdep_init_done)
-+      /* another thread else beat us to it... */
-+      goto out;
-+
-+    mi_init ();
-+
-+    dwarf_init ();
-+
-+#ifndef UNW_REMOTE_ONLY
-+    aarch64_local_addr_space_init ();
-+#endif
-+    tdep_init_done = 1;	/* signal that we're initialized... */
-+  }
-+ out:
-+  lock_release (&aarch64_lock, saved_mask);
-+}
---- /dev/null
-+++ b/src/aarch64/Ginit.c
-@@ -0,0 +1,187 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "unwind_i.h"
-+
-+#ifdef UNW_REMOTE_ONLY
-+
-+/* unw_local_addr_space is a NULL pointer in this case.  */
-+PROTECTED unw_addr_space_t unw_local_addr_space;
-+
-+#else /* !UNW_REMOTE_ONLY */
-+
-+static struct unw_addr_space local_addr_space;
-+
-+PROTECTED unw_addr_space_t unw_local_addr_space = &local_addr_space;
-+
-+static inline void *
-+uc_addr (ucontext_t *uc, int reg)
-+{
-+  if (reg >= UNW_AARCH64_X0 && reg <= UNW_AARCH64_V31)
-+    return &uc->uc_mcontext.regs[reg];
-+  else
-+    return NULL;
-+}
-+
-+# ifdef UNW_LOCAL_ONLY
-+
-+HIDDEN void *
-+tdep_uc_addr (ucontext_t *uc, int reg)
-+{
-+  return uc_addr (uc, 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)
-+{
-+  /* it's a no-op */
-+}
-+
-+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;
-+  return 0;
-+}
-+
-+static int
-+access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write,
-+	    void *arg)
-+{
-+  if (write)
-+    {
-+      Debug (16, "mem[%lx] <- %lx\n", addr, *val);
-+      *(unw_word_t *) addr = *val;
-+    }
-+  else
-+    {
-+      *val = *(unw_word_t *) addr;
-+      Debug (16, "mem[%lx] -> %lx\n", addr, *val);
-+    }
-+  return 0;
-+}
-+
-+static int
-+access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write,
-+	    void *arg)
-+{
-+  unw_word_t *addr;
-+  ucontext_t *uc = arg;
-+
-+  if (unw_is_fpreg (reg))
-+    goto badreg;
-+
-+  if (!(addr = uc_addr (uc, reg)))
-+    goto badreg;
-+
-+  if (write)
-+    {
-+      *(unw_word_t *) addr = *val;
-+      Debug (12, "%s <- %lx\n", unw_regname (reg), *val);
-+    }
-+  else
-+    {
-+      *val = *(unw_word_t *) addr;
-+      Debug (12, "%s -> %lx\n", unw_regname (reg), *val);
-+    }
-+  return 0;
-+
-+ badreg:
-+  Debug (1, "bad register number %u\n", reg);
-+  return -UNW_EBADREG;
-+}
-+
-+static int
-+access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val,
-+	      int write, void *arg)
-+{
-+  ucontext_t *uc = arg;
-+  unw_fpreg_t *addr;
-+
-+  if (!unw_is_fpreg (reg))
-+    goto badreg;
-+
-+  if (!(addr = uc_addr (uc, reg)))
-+    goto badreg;
-+
-+  if (write)
-+    {
-+      Debug (12, "%s <- %08lx.%08lx.%08lx\n", unw_regname (reg),
-+	     ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]);
-+      *(unw_fpreg_t *) addr = *val;
-+    }
-+  else
-+    {
-+      *val = *(unw_fpreg_t *) addr;
-+      Debug (12, "%s -> %08lx.%08lx.%08lx\n", unw_regname (reg),
-+	     ((long *)val)[0], ((long *)val)[1], ((long *)val)[2]);
-+    }
-+  return 0;
-+
-+ badreg:
-+  Debug (1, "bad register number %u\n", reg);
-+  /* attempt to access a non-preserved register */
-+  return -UNW_EBADREG;
-+}
-+
-+static int
-+get_static_proc_name (unw_addr_space_t as, unw_word_t ip,
-+		      char *buf, size_t buf_len, unw_word_t *offp,
-+		      void *arg)
-+{
-+  return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp);
-+}
-+
-+HIDDEN void
-+aarch64_local_addr_space_init (void)
-+{
-+  memset (&local_addr_space, 0, sizeof (local_addr_space));
-+  local_addr_space.caching_policy = UNW_CACHE_GLOBAL;
-+  local_addr_space.acc.find_proc_info = dwarf_find_proc_info;
-+  local_addr_space.acc.put_unwind_info = put_unwind_info;
-+  local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr;
-+  local_addr_space.acc.access_mem = access_mem;
-+  local_addr_space.acc.access_reg = access_reg;
-+  local_addr_space.acc.access_fpreg = access_fpreg;
-+  local_addr_space.acc.resume = aarch64_local_resume;
-+  local_addr_space.acc.get_proc_name = get_static_proc_name;
-+  unw_flush_cache (&local_addr_space, 0, 0);
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
---- /dev/null
-+++ b/src/aarch64/Ginit_local.c
-@@ -0,0 +1,55 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+#include "init.h"
-+
-+#ifdef UNW_REMOTE_ONLY
-+
-+PROTECTED int
-+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc)
-+{
-+  return -UNW_EINVAL;
-+}
-+
-+#else /* !UNW_REMOTE_ONLY */
-+
-+PROTECTED int
-+unw_init_local (unw_cursor_t *cursor, unw_context_t *uc)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  if (!tdep_init_done)
-+    tdep_init ();
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  c->dwarf.as = unw_local_addr_space;
-+  c->dwarf.as_arg = uc;
-+
-+  return common_init (c, 1);
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
---- /dev/null
-+++ b/src/aarch64/Ginit_remote.c
-@@ -0,0 +1,45 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "init.h"
-+#include "unwind_i.h"
-+
-+PROTECTED int
-+unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg)
-+{
-+#ifdef UNW_LOCAL_ONLY
-+  return -UNW_EINVAL;
-+#else /* !UNW_LOCAL_ONLY */
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  if (!tdep_init_done)
-+    tdep_init ();
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  c->dwarf.as = as;
-+  c->dwarf.as_arg = as_arg;
-+  return common_init (c, 0);
-+#endif /* !UNW_LOCAL_ONLY */
-+}
---- /dev/null
-+++ b/src/aarch64/Gis_signal_frame.c
-@@ -0,0 +1,64 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+/* The restorer stub will always have the form:
-+
-+   d2801168        movz    x8, #0x8b
-+   d4000001        svc     #0x0
-+*/
-+
-+PROTECTED int
-+unw_is_signal_frame (unw_cursor_t *cursor)
-+{
-+#ifdef __linux__
-+  struct cursor *c = (struct cursor *) cursor;
-+  unw_word_t w0, ip;
-+  unw_addr_space_t as;
-+  unw_accessors_t *a;
-+  void *arg;
-+  int ret;
-+
-+  as = c->dwarf.as;
-+  a = unw_get_accessors (as);
-+  arg = c->dwarf.as_arg;
-+
-+  ip = c->dwarf.ip;
-+
-+  ret = (*a->access_mem) (as, ip, &w0, 0, arg);
-+  if (ret < 0)
-+    return ret;
-+
-+  /* FIXME: distinguish 32bit insn vs 64bit registers.  */
-+  if (w0 != 0xd4000001d2801168)
-+    return 0;
-+
-+  return 1;
-+
-+#else
-+  return -UNW_ENOINFO;
-+#endif
-+}
---- /dev/null
-+++ b/src/aarch64/Gregs.c
-@@ -0,0 +1,113 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+HIDDEN int
-+tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
-+		 int write)
-+{
-+  dwarf_loc_t loc = DWARF_NULL_LOC;
-+  unsigned int mask;
-+
-+  switch (reg)
-+    {
-+    case UNW_AARCH64_X0:
-+    case UNW_AARCH64_X1:
-+    case UNW_AARCH64_X2:
-+    case UNW_AARCH64_X3:
-+      mask = 1 << reg;
-+      if (write)
-+        {
-+          c->dwarf.eh_args[reg] = *valp;
-+          c->dwarf.eh_valid_mask |= mask;
-+          return 0;
-+        }
-+      else if ((c->dwarf.eh_valid_mask & mask) != 0)
-+        {
-+          *valp = c->dwarf.eh_args[reg];
-+          return 0;
-+        }
-+      else
-+        loc = c->dwarf.loc[reg];
-+      break;
-+
-+    case UNW_AARCH64_X4:
-+    case UNW_AARCH64_X5:
-+    case UNW_AARCH64_X6:
-+    case UNW_AARCH64_X7:
-+    case UNW_AARCH64_X8:
-+    case UNW_AARCH64_X9:
-+    case UNW_AARCH64_X10:
-+    case UNW_AARCH64_X11:
-+    case UNW_AARCH64_X12:
-+    case UNW_AARCH64_X13:
-+    case UNW_AARCH64_X14:
-+    case UNW_AARCH64_X15:
-+    case UNW_AARCH64_X16:
-+    case UNW_AARCH64_X17:
-+    case UNW_AARCH64_X18:
-+    case UNW_AARCH64_X19:
-+    case UNW_AARCH64_X20:
-+    case UNW_AARCH64_X21:
-+    case UNW_AARCH64_X22:
-+    case UNW_AARCH64_X23:
-+    case UNW_AARCH64_X24:
-+    case UNW_AARCH64_X25:
-+    case UNW_AARCH64_X26:
-+    case UNW_AARCH64_X27:
-+    case UNW_AARCH64_X28:
-+    case UNW_AARCH64_X29:
-+    case UNW_AARCH64_X30:
-+    case UNW_AARCH64_PC:
-+    case UNW_AARCH64_PSTATE:
-+      loc = c->dwarf.loc[reg];
-+      break;
-+
-+    case UNW_AARCH64_SP:
-+      if (write)
-+        return -UNW_EREADONLYREG;
-+      *valp = c->dwarf.cfa;
-+      return 0;
-+
-+    default:
-+      Debug (1, "bad register number %u\n", reg);
-+      return -UNW_EBADREG;
-+    }
-+
-+  if (write)
-+    return dwarf_put (&c->dwarf, loc, *valp);
-+  else
-+    return dwarf_get (&c->dwarf, loc, valp);
-+}
-+
-+HIDDEN int
-+tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp,
-+		   int write)
-+{
-+  Debug (1, "bad register number %u\n", reg);
-+  return -UNW_EBADREG;
-+}
---- /dev/null
-+++ b/src/aarch64/Gresume.c
-@@ -0,0 +1,177 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+#include "offsets.h"
-+
-+#ifndef UNW_REMOTE_ONLY
-+
-+HIDDEN inline int
-+aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
-+{
-+#ifdef __linux__
-+  struct cursor *c = (struct cursor *) cursor;
-+  unw_tdep_context_t *uc = c->dwarf.as_arg;
-+
-+  if (c->sigcontext_format == AARCH64_SCF_NONE)
-+    {
-+      /* Since there are no signals involved here we restore the non scratch
-+	 registers only.  */
-+      unsigned long regs[11];
-+      regs[0] = uc->uc_mcontext.regs[19];
-+      regs[1] = uc->uc_mcontext.regs[20];
-+      regs[2] = uc->uc_mcontext.regs[21];
-+      regs[3] = uc->uc_mcontext.regs[22];
-+      regs[4] = uc->uc_mcontext.regs[23];
-+      regs[5] = uc->uc_mcontext.regs[24];
-+      regs[6] = uc->uc_mcontext.regs[25];
-+      regs[7] = uc->uc_mcontext.regs[26];
-+      regs[8] = uc->uc_mcontext.regs[27];
-+      regs[9] = uc->uc_mcontext.regs[28];
-+      regs[10] = uc->uc_mcontext.regs[30]; /* LR */
-+      unsigned long sp = uc->uc_mcontext.sp;
-+
-+      struct regs_overlay {
-+        char x[sizeof(regs)];
-+      };
-+
-+      asm volatile (
-+        "ldp x19, x20, [%0]\n"
-+        "ldp x21, x22, [%0,16]\n"
-+        "ldp x23, x24, [%0,32]\n"
-+        "ldp x25, x26, [%0,48]\n"
-+        "ldp x27, x28, [%0,64]\n"
-+        "ldr x30, [%0,80]\n"
-+        "mov sp, %1\n"
-+        "ret \n"
-+        :
-+        : "r" (regs),
-+          "r" (sp),
-+          "m" (*(struct regs_overlay *)regs)
-+      );
-+    }
-+  else
-+    {
-+      struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
-+
-+      if (c->dwarf.eh_valid_mask & 0x1) sc->regs[0] = c->dwarf.eh_args[0];
-+      if (c->dwarf.eh_valid_mask & 0x2) sc->regs[1] = c->dwarf.eh_args[1];
-+      if (c->dwarf.eh_valid_mask & 0x4) sc->regs[2] = c->dwarf.eh_args[2];
-+      if (c->dwarf.eh_valid_mask & 0x8) sc->regs[3] = c->dwarf.eh_args[3];
-+
-+      sc->regs[4] = uc->uc_mcontext.regs[4];
-+      sc->regs[5] = uc->uc_mcontext.regs[5];
-+      sc->regs[6] = uc->uc_mcontext.regs[6];
-+      sc->regs[7] = uc->uc_mcontext.regs[7];
-+      sc->regs[8] = uc->uc_mcontext.regs[8];
-+      sc->regs[9] = uc->uc_mcontext.regs[9];
-+      sc->regs[10] = uc->uc_mcontext.regs[10];
-+      sc->regs[11] = uc->uc_mcontext.regs[11];
-+      sc->regs[12] = uc->uc_mcontext.regs[12];
-+      sc->regs[13] = uc->uc_mcontext.regs[13];
-+      sc->regs[14] = uc->uc_mcontext.regs[14];
-+      sc->regs[15] = uc->uc_mcontext.regs[15];
-+      sc->regs[16] = uc->uc_mcontext.regs[16];
-+      sc->regs[17] = uc->uc_mcontext.regs[17];
-+      sc->regs[18] = uc->uc_mcontext.regs[18];
-+      sc->regs[19] = uc->uc_mcontext.regs[19];
-+      sc->regs[20] = uc->uc_mcontext.regs[20];
-+      sc->regs[21] = uc->uc_mcontext.regs[21];
-+      sc->regs[22] = uc->uc_mcontext.regs[22];
-+      sc->regs[23] = uc->uc_mcontext.regs[23];
-+      sc->regs[24] = uc->uc_mcontext.regs[24];
-+      sc->regs[25] = uc->uc_mcontext.regs[25];
-+      sc->regs[26] = uc->uc_mcontext.regs[26];
-+      sc->regs[27] = uc->uc_mcontext.regs[27];
-+      sc->regs[28] = uc->uc_mcontext.regs[28];
-+      sc->regs[29] = uc->uc_mcontext.regs[29];
-+      sc->regs[30] = uc->uc_mcontext.regs[30];
-+      sc->sp = uc->uc_mcontext.sp;
-+      sc->pc = uc->uc_mcontext.pc;
-+      sc->pstate = uc->uc_mcontext.pstate;
-+
-+      asm volatile (
-+        "mov sp, %0\n"
-+        "ret %1\n"
-+        : : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc)
-+      );
-+   }
-+  unreachable();
-+#else
-+  printf ("%s: implement me\n", __FUNCTION__);
-+#endif
-+  return -UNW_EINVAL;
-+}
-+
-+#endif /* !UNW_REMOTE_ONLY */
-+
-+static inline void
-+establish_machine_state (struct cursor *c)
-+{
-+  unw_addr_space_t as = c->dwarf.as;
-+  void *arg = c->dwarf.as_arg;
-+  unw_fpreg_t fpval;
-+  unw_word_t val;
-+  int reg;
-+
-+  Debug (8, "copying out cursor state\n");
-+
-+  for (reg = 0; reg <= UNW_AARCH64_PSTATE; ++reg)
-+    {
-+      Debug (16, "copying %s %d\n", unw_regname (reg), reg);
-+      if (unw_is_fpreg (reg))
-+	{
-+	  if (tdep_access_fpreg (c, reg, &fpval, 0) >= 0)
-+	    as->acc.access_fpreg (as, reg, &fpval, 1, arg);
-+	}
-+      else
-+	{
-+	  if (tdep_access_reg (c, reg, &val, 0) >= 0)
-+	    as->acc.access_reg (as, reg, &val, 1, arg);
-+	}
-+    }
-+}
-+
-+PROTECTED int
-+unw_resume (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+
-+  Debug (1, "(cursor=%p)\n", c);
-+
-+  if (!c->dwarf.ip)
-+    {
-+      /* This can happen easily when the frame-chain gets truncated
-+	 due to bad or missing unwind-info.  */
-+      Debug (1, "refusing to resume execution at address 0\n");
-+      return -UNW_EINVAL;
-+    }
-+
-+  establish_machine_state (c);
-+
-+  return (*c->dwarf.as->acc.resume) (c->dwarf.as, (unw_cursor_t *) c,
-+				     c->dwarf.as_arg);
-+}
---- /dev/null
-+++ b/src/aarch64/Gstep.c
-@@ -0,0 +1,129 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2011-2013 Linaro Limited
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+#include "offsets.h"
-+
-+PROTECTED int
-+unw_handle_signal_frame (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+  unw_word_t sc_addr, sp, sp_addr = c->dwarf.cfa;
-+  struct dwarf_loc sp_loc = DWARF_LOC (sp_addr, 0);
-+
-+  if ((ret = dwarf_get (&c->dwarf, sp_loc, &sp)) < 0)
-+    return -UNW_EUNSPEC;
-+
-+  ret = unw_is_signal_frame (cursor);
-+  Debug(1, "unw_is_signal_frame()=%d\n", ret);
-+
-+  /* Save the SP and PC to be able to return execution at this point
-+     later in time (unw_resume).  */
-+  c->sigcontext_sp = c->dwarf.cfa;
-+  c->sigcontext_pc = c->dwarf.ip;
-+
-+  if (ret)
-+    {
-+      c->sigcontext_format = AARCH64_SCF_LINUX_RT_SIGFRAME;
-+      sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
-+    }
-+  else
-+    return -UNW_EUNSPEC;
-+
-+  c->sigcontext_addr = sc_addr;
-+
-+  /* Update the dwarf cursor.
-+     Set the location of the registers to the corresponding addresses of the
-+     uc_mcontext / sigcontext structure contents.  */
-+  c->dwarf.loc[UNW_AARCH64_X0]  = DWARF_LOC (sc_addr + LINUX_SC_X0_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X1]  = DWARF_LOC (sc_addr + LINUX_SC_X1_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X2]  = DWARF_LOC (sc_addr + LINUX_SC_X2_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X3]  = DWARF_LOC (sc_addr + LINUX_SC_X3_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X4]  = DWARF_LOC (sc_addr + LINUX_SC_X4_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X5]  = DWARF_LOC (sc_addr + LINUX_SC_X5_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X6]  = DWARF_LOC (sc_addr + LINUX_SC_X6_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X7]  = DWARF_LOC (sc_addr + LINUX_SC_X7_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X8]  = DWARF_LOC (sc_addr + LINUX_SC_X8_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X9]  = DWARF_LOC (sc_addr + LINUX_SC_X9_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X10] = DWARF_LOC (sc_addr + LINUX_SC_X10_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X11] = DWARF_LOC (sc_addr + LINUX_SC_X11_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X12] = DWARF_LOC (sc_addr + LINUX_SC_X12_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X13] = DWARF_LOC (sc_addr + LINUX_SC_X13_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X14] = DWARF_LOC (sc_addr + LINUX_SC_X14_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X15] = DWARF_LOC (sc_addr + LINUX_SC_X15_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X16] = DWARF_LOC (sc_addr + LINUX_SC_X16_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X17] = DWARF_LOC (sc_addr + LINUX_SC_X17_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X18] = DWARF_LOC (sc_addr + LINUX_SC_X18_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X19] = DWARF_LOC (sc_addr + LINUX_SC_X19_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X20] = DWARF_LOC (sc_addr + LINUX_SC_X20_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X21] = DWARF_LOC (sc_addr + LINUX_SC_X21_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X22] = DWARF_LOC (sc_addr + LINUX_SC_X22_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X23] = DWARF_LOC (sc_addr + LINUX_SC_X23_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X24] = DWARF_LOC (sc_addr + LINUX_SC_X24_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X25] = DWARF_LOC (sc_addr + LINUX_SC_X25_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X26] = DWARF_LOC (sc_addr + LINUX_SC_X26_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X27] = DWARF_LOC (sc_addr + LINUX_SC_X27_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X28] = DWARF_LOC (sc_addr + LINUX_SC_X28_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X29] = DWARF_LOC (sc_addr + LINUX_SC_X29_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_X30] = DWARF_LOC (sc_addr + LINUX_SC_X30_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_SP]  = DWARF_LOC (sc_addr + LINUX_SC_SP_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_PC]  = DWARF_LOC (sc_addr + LINUX_SC_PC_OFF, 0);
-+  c->dwarf.loc[UNW_AARCH64_PSTATE]  = DWARF_LOC (sc_addr + LINUX_SC_PSTATE_OFF, 0);
-+
-+  /* Set SP/CFA and PC/IP.  */
-+  dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa);
-+  dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip);
-+
-+  c->dwarf.pi_valid = 0;
-+
-+  return 1;
-+}
-+
-+PROTECTED int
-+unw_step (unw_cursor_t *cursor)
-+{
-+  struct cursor *c = (struct cursor *) cursor;
-+  int ret;
-+
-+  Debug (1, "(cursor=%p, ip=0x%016lx, cfa=0x%016lx))\n",
-+	 c, c->dwarf.ip, c->dwarf.cfa);
-+
-+  /* Check if this is a signal frame. */
-+  if (unw_is_signal_frame (cursor))
-+    return unw_handle_signal_frame (cursor);
-+
-+  ret = dwarf_step (&c->dwarf);
-+  Debug(1, "dwarf_step()=%d\n", ret);
-+
-+  if (unlikely (ret == -UNW_ESTOPUNWIND))
-+    return ret;
-+
-+  if (unlikely (ret < 0))
-+    return 0;
-+
-+  return (c->dwarf.ip == 0) ? 0 : 1;
-+}
---- /dev/null
-+++ b/src/aarch64/Lcreate_addr_space.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gcreate_addr_space.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lget_proc_info.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gget_proc_info.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lget_save_loc.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gget_save_loc.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lglobal.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gglobal.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit_local.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit_local.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Linit_remote.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Ginit_remote.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lis_signal_frame.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gis_signal_frame.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lregs.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gregs.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lresume.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gresume.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/Lstep.c
-@@ -0,0 +1,5 @@
-+#define UNW_LOCAL_ONLY
-+#include <libunwind.h>
-+#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
-+#include "Gstep.c"
-+#endif
---- /dev/null
-+++ b/src/aarch64/gen-offsets.c
-@@ -0,0 +1,68 @@
-+#include <stdio.h>
-+#include <stddef.h>
-+#include <ucontext.h>
-+#include <asm/sigcontext.h>
-+
-+#define UC(N,X) \
-+  printf ("#define LINUX_UC_" N "_OFF\t0x%X\n", offsetof (ucontext_t, X))
-+
-+#define SC(N,X) \
-+  printf ("#define LINUX_SC_" N "_OFF\t0x%X\n", offsetof (struct sigcontext, X))
-+
-+int
-+main (void)
-+{
-+  printf (
-+"/* Linux-specific definitions: */\n\n"
-+
-+"/* Define various structure offsets to simplify cross-compilation.  */\n\n"
-+
-+"/* Offsets for AArch64 Linux \"ucontext_t\":  */\n\n");
-+
-+  UC ("FLAGS", uc_flags);
-+  UC ("LINK", uc_link);
-+  UC ("STACK", uc_stack);
-+  UC ("MCONTEXT", uc_mcontext);
-+  UC ("SIGMASK", uc_sigmask);
-+
-+  printf ("\n/* Offsets for AArch64 Linux \"struct sigcontext\":  */\n\n");
-+
-+  SC ("R0",  regs[0]);
-+  SC ("R1",  regs[1]);
-+  SC ("R2",  regs[2]);
-+  SC ("R3",  regs[3]);
-+  SC ("R4",  regs[4]);
-+  SC ("R5",  regs[5]);
-+  SC ("R6",  regs[6]);
-+  SC ("R7",  regs[7]);
-+  SC ("R8",  regs[8]);
-+  SC ("R9",  regs[9]);
-+  SC ("R10", regs[10]);
-+  SC ("R11", regs[11]);
-+  SC ("R12", regs[12]);
-+  SC ("R13", regs[13]);
-+  SC ("R14", regs[14]);
-+  SC ("R15", regs[15]);
-+  SC ("R16", regs[16]);
-+  SC ("R17", regs[17]);
-+  SC ("R18", regs[18]);
-+  SC ("R19", regs[19]);
-+  SC ("R20", regs[20]);
-+  SC ("R21", regs[21]);
-+  SC ("R22", regs[22]);
-+  SC ("R23", regs[23]);
-+  SC ("R24", regs[24]);
-+  SC ("R25", regs[25]);
-+  SC ("R26", regs[26]);
-+  SC ("R27", regs[27]);
-+  SC ("R28", regs[28]);
-+  SC ("R29", regs[29]);
-+  SC ("R30", regs[30]);
-+  SC ("R31", regs[31]);
-+
-+  SC ("PC", pc);
-+  SC ("SP", sp);
-+  SC ("Fault", fault_address);
-+  SC ("state", pstate);
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/init.h
-@@ -0,0 +1,127 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+static inline int
-+common_init (struct cursor *c, unsigned use_prev_instr)
-+{
-+  int ret, i;
-+
-+  c->dwarf.loc[UNW_AARCH64_X0]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X0);
-+  c->dwarf.loc[UNW_AARCH64_X1]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X1);
-+  c->dwarf.loc[UNW_AARCH64_X2]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X2);
-+  c->dwarf.loc[UNW_AARCH64_X3]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X3);
-+  c->dwarf.loc[UNW_AARCH64_X4]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X4);
-+  c->dwarf.loc[UNW_AARCH64_X5]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X5);
-+  c->dwarf.loc[UNW_AARCH64_X6]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X6);
-+  c->dwarf.loc[UNW_AARCH64_X7]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X7);
-+  c->dwarf.loc[UNW_AARCH64_X8]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X8);
-+  c->dwarf.loc[UNW_AARCH64_X9]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X9);
-+  c->dwarf.loc[UNW_AARCH64_X10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X10);
-+  c->dwarf.loc[UNW_AARCH64_X11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X11);
-+  c->dwarf.loc[UNW_AARCH64_X12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X12);
-+  c->dwarf.loc[UNW_AARCH64_X13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X13);
-+  c->dwarf.loc[UNW_AARCH64_X14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X14);
-+  c->dwarf.loc[UNW_AARCH64_X15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X15);
-+  c->dwarf.loc[UNW_AARCH64_X16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X16);
-+  c->dwarf.loc[UNW_AARCH64_X17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X17);
-+  c->dwarf.loc[UNW_AARCH64_X18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X18);
-+  c->dwarf.loc[UNW_AARCH64_X19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X19);
-+  c->dwarf.loc[UNW_AARCH64_X20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X20);
-+  c->dwarf.loc[UNW_AARCH64_X21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X21);
-+  c->dwarf.loc[UNW_AARCH64_X22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X22);
-+  c->dwarf.loc[UNW_AARCH64_X23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X23);
-+  c->dwarf.loc[UNW_AARCH64_X24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X24);
-+  c->dwarf.loc[UNW_AARCH64_X25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X25);
-+  c->dwarf.loc[UNW_AARCH64_X26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X26);
-+  c->dwarf.loc[UNW_AARCH64_X27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X27);
-+  c->dwarf.loc[UNW_AARCH64_X28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X28);
-+  c->dwarf.loc[UNW_AARCH64_X29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X29);
-+  c->dwarf.loc[UNW_AARCH64_X30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_X30);
-+  c->dwarf.loc[UNW_AARCH64_SP]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_SP);
-+  c->dwarf.loc[UNW_AARCH64_PC]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_PC);
-+  c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_REG_LOC (&c->dwarf,
-+                                                    UNW_AARCH64_PSTATE);
-+  c->dwarf.loc[UNW_AARCH64_V0]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V0);
-+  c->dwarf.loc[UNW_AARCH64_V1]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V1);
-+  c->dwarf.loc[UNW_AARCH64_V2]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V2);
-+  c->dwarf.loc[UNW_AARCH64_V3]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V3);
-+  c->dwarf.loc[UNW_AARCH64_V4]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V4);
-+  c->dwarf.loc[UNW_AARCH64_V5]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V5);
-+  c->dwarf.loc[UNW_AARCH64_V6]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V6);
-+  c->dwarf.loc[UNW_AARCH64_V7]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V7);
-+  c->dwarf.loc[UNW_AARCH64_V8]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V8);
-+  c->dwarf.loc[UNW_AARCH64_V9]  = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V9);
-+  c->dwarf.loc[UNW_AARCH64_V10] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V10);
-+  c->dwarf.loc[UNW_AARCH64_V11] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V11);
-+  c->dwarf.loc[UNW_AARCH64_V12] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V12);
-+  c->dwarf.loc[UNW_AARCH64_V13] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V13);
-+  c->dwarf.loc[UNW_AARCH64_V14] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V14);
-+  c->dwarf.loc[UNW_AARCH64_V15] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V15);
-+  c->dwarf.loc[UNW_AARCH64_V16] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V16);
-+  c->dwarf.loc[UNW_AARCH64_V17] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V17);
-+  c->dwarf.loc[UNW_AARCH64_V18] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V18);
-+  c->dwarf.loc[UNW_AARCH64_V19] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V19);
-+  c->dwarf.loc[UNW_AARCH64_V20] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V20);
-+  c->dwarf.loc[UNW_AARCH64_V21] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V21);
-+  c->dwarf.loc[UNW_AARCH64_V22] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V22);
-+  c->dwarf.loc[UNW_AARCH64_V23] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V23);
-+  c->dwarf.loc[UNW_AARCH64_V24] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V24);
-+  c->dwarf.loc[UNW_AARCH64_V25] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V25);
-+  c->dwarf.loc[UNW_AARCH64_V26] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V26);
-+  c->dwarf.loc[UNW_AARCH64_V27] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V27);
-+  c->dwarf.loc[UNW_AARCH64_V28] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V28);
-+  c->dwarf.loc[UNW_AARCH64_V29] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V29);
-+  c->dwarf.loc[UNW_AARCH64_V30] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V30);
-+  c->dwarf.loc[UNW_AARCH64_V31] = DWARF_REG_LOC (&c->dwarf, UNW_AARCH64_V31);
-+
-+  for (i = UNW_AARCH64_PSTATE + 1; i < UNW_AARCH64_V0; ++i)
-+    c->dwarf.loc[i] = DWARF_NULL_LOC;
-+
-+  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip);
-+  if (ret < 0)
-+    return ret;
-+
-+  ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &c->dwarf.cfa);
-+  if (ret < 0)
-+    return ret;
-+
-+  c->sigcontext_format = AARCH64_SCF_NONE;
-+  c->sigcontext_addr = 0;
-+  c->sigcontext_sp = 0;
-+  c->sigcontext_pc = 0;
-+
-+  c->dwarf.args_size = 0;
-+  c->dwarf.ret_addr_column = 0;
-+  c->dwarf.stash_frames = 0;
-+  c->dwarf.use_prev_instr = use_prev_instr;
-+  c->dwarf.pi_valid = 0;
-+  c->dwarf.pi_is_dynamic = 0;
-+  c->dwarf.hint = 0;
-+  c->dwarf.prev_rs = 0;
-+
-+  return 0;
-+}
---- /dev/null
-+++ b/src/aarch64/is_fpreg.c
-@@ -0,0 +1,32 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "libunwind_i.h"
-+
-+PROTECTED int
-+unw_is_fpreg (int regnum)
-+{
-+  return (regnum >= UNW_AARCH64_V0 && regnum <= UNW_AARCH64_V31);
-+}
---- /dev/null
-+++ b/src/aarch64/offsets.h
-@@ -0,0 +1,49 @@
-+/* Linux-specific definitions: */
-+
-+/* Define various structure offsets to simplify cross-compilation.  */
-+
-+/* Offsets for AArch64 Linux "ucontext_t":  */
-+
-+#define LINUX_UC_FLAGS_OFF	0x0
-+#define LINUX_UC_LINK_OFF	0x8
-+#define LINUX_UC_STACK_OFF	0x10
-+#define LINUX_UC_SIGMASK_OFF	0x28
-+#define LINUX_UC_MCONTEXT_OFF	0xb0
-+
-+/* Offsets for AArch64 Linux "struct sigcontext":  */
-+
-+#define LINUX_SC_FAULTADDRESS_OFF	0x00
-+#define LINUX_SC_X0_OFF		0x008
-+#define LINUX_SC_X1_OFF		0x010
-+#define LINUX_SC_X2_OFF		0x018
-+#define LINUX_SC_X3_OFF		0x020
-+#define LINUX_SC_X4_OFF		0x028
-+#define LINUX_SC_X5_OFF		0x030
-+#define LINUX_SC_X6_OFF		0x038
-+#define LINUX_SC_X7_OFF		0x040
-+#define LINUX_SC_X8_OFF		0x048
-+#define LINUX_SC_X9_OFF		0x050
-+#define LINUX_SC_X10_OFF	0x058
-+#define LINUX_SC_X11_OFF	0x060
-+#define LINUX_SC_X12_OFF	0x068
-+#define LINUX_SC_X13_OFF	0x070
-+#define LINUX_SC_X14_OFF	0x078
-+#define LINUX_SC_X15_OFF	0x080
-+#define LINUX_SC_X16_OFF	0x088
-+#define LINUX_SC_X17_OFF	0x090
-+#define LINUX_SC_X18_OFF	0x098
-+#define LINUX_SC_X19_OFF	0x0a0
-+#define LINUX_SC_X20_OFF	0x0a8
-+#define LINUX_SC_X21_OFF	0x0b0
-+#define LINUX_SC_X22_OFF	0x0b8
-+#define LINUX_SC_X23_OFF	0x0c0
-+#define LINUX_SC_X24_OFF	0x0c8
-+#define LINUX_SC_X25_OFF	0x0d0
-+#define LINUX_SC_X26_OFF	0x0d8
-+#define LINUX_SC_X27_OFF	0x0e0
-+#define LINUX_SC_X28_OFF	0x0e8
-+#define LINUX_SC_X29_OFF	0x0f0
-+#define LINUX_SC_X30_OFF	0x0f8
-+#define LINUX_SC_SP_OFF		0x100
-+#define LINUX_SC_PC_OFF		0x108
-+#define LINUX_SC_PSTATE_OFF	0x110
---- /dev/null
-+++ b/src/aarch64/regname.c
-@@ -0,0 +1,106 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#include "unwind_i.h"
-+
-+static const char *const regname[] =
-+  {
-+    [UNW_AARCH64_X0] = "x0",
-+    [UNW_AARCH64_X1] = "x1",
-+    [UNW_AARCH64_X2] = "x2",
-+    [UNW_AARCH64_X3] = "x3",
-+    [UNW_AARCH64_X4] = "x4",
-+    [UNW_AARCH64_X5] = "x5",
-+    [UNW_AARCH64_X6] = "x6",
-+    [UNW_AARCH64_X7] = "x7",
-+    [UNW_AARCH64_X8] = "x8",
-+    [UNW_AARCH64_X9] = "x9",
-+    [UNW_AARCH64_X10] = "x10",
-+    [UNW_AARCH64_X11] = "x11",
-+    [UNW_AARCH64_X12] = "x12",
-+    [UNW_AARCH64_X13] = "x13",
-+    [UNW_AARCH64_X14] = "x14",
-+    [UNW_AARCH64_X15] = "x15",
-+    [UNW_AARCH64_X16] = "ip0",
-+    [UNW_AARCH64_X17] = "ip1",
-+    [UNW_AARCH64_X18] = "x18",
-+    [UNW_AARCH64_X19] = "x19",
-+    [UNW_AARCH64_X20] = "x20",
-+    [UNW_AARCH64_X21] = "x21",
-+    [UNW_AARCH64_X22] = "x22",
-+    [UNW_AARCH64_X23] = "x23",
-+    [UNW_AARCH64_X24] = "x24",
-+    [UNW_AARCH64_X25] = "x25",
-+    [UNW_AARCH64_X26] = "x26",
-+    [UNW_AARCH64_X27] = "x27",
-+    [UNW_AARCH64_X28] = "x28",
-+    [UNW_AARCH64_X29] = "fp",
-+    [UNW_AARCH64_X30] = "lr",
-+    [UNW_AARCH64_SP] = "sp",
-+    [UNW_AARCH64_PC] = "pc",
-+    [UNW_AARCH64_V0] = "v0",
-+    [UNW_AARCH64_V1] = "v1",
-+    [UNW_AARCH64_V2] = "v2",
-+    [UNW_AARCH64_V3] = "v3",
-+    [UNW_AARCH64_V4] = "v4",
-+    [UNW_AARCH64_V5] = "v5",
-+    [UNW_AARCH64_V6] = "v6",
-+    [UNW_AARCH64_V7] = "v7",
-+    [UNW_AARCH64_V8] = "v8",
-+    [UNW_AARCH64_V9] = "v9",
-+    [UNW_AARCH64_V10] = "v10",
-+    [UNW_AARCH64_V11] = "v11",
-+    [UNW_AARCH64_V12] = "v12",
-+    [UNW_AARCH64_V13] = "v13",
-+    [UNW_AARCH64_V14] = "v14",
-+    [UNW_AARCH64_V15] = "v15",
-+    [UNW_AARCH64_V16] = "v16",
-+    [UNW_AARCH64_V17] = "v17",
-+    [UNW_AARCH64_V18] = "v18",
-+    [UNW_AARCH64_V19] = "v19",
-+    [UNW_AARCH64_V20] = "v20",
-+    [UNW_AARCH64_V21] = "v21",
-+    [UNW_AARCH64_V22] = "v22",
-+    [UNW_AARCH64_V23] = "v23",
-+    [UNW_AARCH64_V24] = "v24",
-+    [UNW_AARCH64_V25] = "v25",
-+    [UNW_AARCH64_V26] = "v26",
-+    [UNW_AARCH64_V27] = "v27",
-+    [UNW_AARCH64_V28] = "v28",
-+    [UNW_AARCH64_V29] = "v29",
-+    [UNW_AARCH64_V30] = "v30",
-+    [UNW_AARCH64_V31] = "v31",
-+    [UNW_AARCH64_FPSR] = "fpsr",
-+    [UNW_AARCH64_FPCR] = "fpcr",
-+  };
-+
-+PROTECTED const char *
-+unw_regname (unw_regnum_t reg)
-+{
-+  if (reg < (unw_regnum_t) ARRAY_SIZE (regname) && regname[reg] != NULL)
-+    return regname[reg];
-+  else
-+    return "???";
-+}
---- /dev/null
-+++ b/src/aarch64/siglongjmp.S
-@@ -0,0 +1,12 @@
-+	/* Dummy implementation for now.  */
-+
-+	.global _UI_siglongjmp_cont
-+	.global _UI_longjmp_cont
-+
-+_UI_siglongjmp_cont:
-+_UI_longjmp_cont:
-+	ret
-+#ifdef __linux__
-+ /* We do not need executable stack.  */
-+ .section  .note.GNU-stack,"",%progbits
-+#endif
---- /dev/null
-+++ b/src/aarch64/unwind_i.h
-@@ -0,0 +1,43 @@
-+/* libunwind - a platform-independent unwind library
-+   Copyright (C) 2008 CodeSourcery
-+   Copyright (C) 2013 Linaro Limited
-+
-+This file is part of libunwind.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+"Software"), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-+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.  */
-+
-+#ifndef unwind_i_h
-+#define unwind_i_h
-+
-+#include <stdint.h>
-+
-+#include <libunwind-aarch64.h>
-+
-+#include "libunwind_i.h"
-+
-+#define aarch64_lock			UNW_OBJ(lock)
-+#define aarch64_local_resume		UNW_OBJ(local_resume)
-+#define aarch64_local_addr_space_init	UNW_OBJ(local_addr_space_init)
-+
-+extern void aarch64_local_addr_space_init (void);
-+extern int aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor,
-+			     void *arg);
-+
-+#endif /* unwind_i_h */
---- a/src/coredump/_UCD_access_reg_linux.c
-+++ b/src/coredump/_UCD_access_reg_linux.c
-@@ -39,7 +39,10 @@ _UCD_access_reg (unw_addr_space_t as,
-       return -UNW_EINVAL;
-     }
- 
--#if defined(UNW_TARGET_ARM)
-+#if defined(UNW_TARGET_AARCH64)
-+  if (regnum < 0 || regnum >= UNW_AARCH64_FPCR)
-+    goto badreg;
-+#elif defined(UNW_TARGET_ARM)
-   if (regnum < 0 || regnum >= 16)
-     goto badreg;
- #elif defined(UNW_TARGET_SH)
---- a/src/ptrace/_UPT_reg_offset.c
-+++ b/src/ptrace/_UPT_reg_offset.c
-@@ -1,6 +1,7 @@
- /* libunwind - a platform-independent unwind library
-    Copyright (C) 2003-2004 Hewlett-Packard Co
- 	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-+   Copyright (C) 2013 Linaro Limited
- 
- This file is part of libunwind.
- 
-@@ -501,6 +502,41 @@ const int _UPT_reg_offset[UNW_REG_LAST +
-     [UNW_ARM_R15]      = 0x3c,
- #elif defined(UNW_TARGET_MIPS)
- #elif defined(UNW_TARGET_SH)
-+#elif defined(UNW_TARGET_AARCH64)
-+    [UNW_AARCH64_X0]       = 0x00,
-+    [UNW_AARCH64_X1]       = 0x08,
-+    [UNW_AARCH64_X2]       = 0x10,
-+    [UNW_AARCH64_X3]       = 0x18,
-+    [UNW_AARCH64_X4]       = 0x20,
-+    [UNW_AARCH64_X5]       = 0x28,
-+    [UNW_AARCH64_X6]       = 0x30,
-+    [UNW_AARCH64_X7]       = 0x38,
-+    [UNW_AARCH64_X8]       = 0x40,
-+    [UNW_AARCH64_X9]       = 0x48,
-+    [UNW_AARCH64_X10]      = 0x50,
-+    [UNW_AARCH64_X11]      = 0x58,
-+    [UNW_AARCH64_X12]      = 0x60,
-+    [UNW_AARCH64_X13]      = 0x68,
-+    [UNW_AARCH64_X14]      = 0x70,
-+    [UNW_AARCH64_X15]      = 0x78,
-+    [UNW_AARCH64_X16]      = 0x80,
-+    [UNW_AARCH64_X17]      = 0x88,
-+    [UNW_AARCH64_X18]      = 0x90,
-+    [UNW_AARCH64_X19]      = 0x98,
-+    [UNW_AARCH64_X20]      = 0xa0,
-+    [UNW_AARCH64_X21]      = 0xa8,
-+    [UNW_AARCH64_X22]      = 0xb0,
-+    [UNW_AARCH64_X23]      = 0xb8,
-+    [UNW_AARCH64_X24]      = 0xc0,
-+    [UNW_AARCH64_X25]      = 0xc8,
-+    [UNW_AARCH64_X26]      = 0xd0,
-+    [UNW_AARCH64_X27]      = 0xd8,
-+    [UNW_AARCH64_X28]      = 0xe0,
-+    [UNW_AARCH64_X29]      = 0xe8,
-+    [UNW_AARCH64_X30]      = 0xf0,
-+    [UNW_AARCH64_SP]       = 0xf8,
-+    [UNW_AARCH64_PC]       = 0x100,
-+    [UNW_AARCH64_PSTATE]   = 0x108
- #else
- # error Fix me.
- #endif
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch b/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch
deleted file mode 100644
index dc0f5c1..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Fix test case link failure on PowerPC systems with Altivec
-
-Upstream-Status:backport
-
-On systems where the system compiler supports Altivec by default,
-the libunwind Makefile will attempt to build an extra test case
-ppc64-test-altivec.  Unfortunately, the link step will fail since
-the Makefile does not actually link against the libunwind library.
-
-Fixed by adding the appropriate LDADD macro.
-
-Signed-off-by: Ulrich Weigand <address@hidden>
----
- tests/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0e30536..9c76628 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -201,3 +201,4 @@ Lia64_test_rbs_LDADD = $(LIBUNWIND_local)
- Lia64_test_readonly_LDADD = $(LIBUNWIND_local)
- ia64_test_dyn1_LDADD = $(LIBUNWIND)
- ia64_test_sig_LDADD = $(LIBUNWIND)
-+ppc64_test_altivec_LDADD = $(LIBUNWIND)
--- 
-1.8.5
-
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch b/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch
deleted file mode 100644
index 0e55c91..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/Link-libunwind-to-libgcc_s-rather-than-libgcc.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 508ca17a7be01d1cc960d9a07d0af4513948fb8d Mon Sep 17 00:00:00 2001
-From: Thierry Reding <treding@nvidia.com>
-Date: Fri, 27 Jun 2014 08:40:33 +0200
-Subject: [PATCH] Link libunwind to libgcc_s rather than libgcc
-
-For some architectures, -lgcc and -lgcc_s are not equivalent. On ARM for
-example, libgcc_s.so.1 contains some symbols needed by libunwind which
-are not present in libgcc.
-
-This causes the following link error when building the X.Org X server
-with libunwind support:
-
-	  CCLD     Xorg
-	/usr/lib/libunwind.so: undefined reference to `__aeabi_unwind_cpp_pr0'
-	/usr/lib/libunwind.so: undefined reference to `__aeabi_unwind_cpp_pr1'
-
-Linking against libgcc_s explicitly solves this problem.
-
-Upstream-Status: Backport
-
-Signed-off-by: Thierry Reding <treding@nvidia.com>
-Signed-off-by: Jonathan Liu <net147@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index cffe19b..3beb5f2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -258,7 +258,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#ifndef __INTEL_COMPILER
- 
- if test x$GCC = xyes -a x$intel_compiler != xyes; then
-   CFLAGS="${CFLAGS} -fexceptions -Wall -Wsign-compare"
--  LIBCRTS="-lgcc"
-+  LIBCRTS="-lgcc_s"
- fi
- AC_MSG_RESULT([$intel_compiler])
- 
--- 
-2.3.2
-
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch b/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch
deleted file mode 100644
index 268b702..0000000
--- a/meta/recipes-support/libunwind/libunwind-1.1/Support-building-with-older-compilers.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 10b064ffe902d5af31bb49bd8e4f03c545f8d462 Mon Sep 17 00:00:00 2001
-From: Ladislav Michl <ladis@linux-mips.org>
-Date: Tue, 13 Nov 2012 11:19:47 +0100
-Subject: [PATCH] Support building with older compilers.
-
-Add a check for __builtin_unreachable.
-
-Upstream-Status: Pending
----
- configure.ac          |   11 +++++++++++
- include/libunwind_i.h |    6 ++++++
- src/arm/Gresume.c     |    2 +-
- src/sh/Gresume.c      |    2 +-
- 4 files changed, 19 insertions(+), 2 deletions(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -285,6 +285,17 @@ if test x$have__builtin___clear_cache =
- fi
- AC_MSG_RESULT([$have__builtin___clear_cache])
- 
-+AC_MSG_CHECKING([for __builtin_unreachable])
-+AC_LINK_IFELSE(
-+  [AC_LANG_PROGRAM([[]], [[__builtin_unreachable()]])],
-+  [have__builtin_unreachable=yes],
-+  [have__builtin_unreachable=no])
-+if test x$have__builtin_unreachable = xyes; then
-+  AC_DEFINE([HAVE__BUILTIN_UNREACHABLE], [1],
-+            [Defined if __builtin_unreachable() is available])
-+fi
-+AC_MSG_RESULT([$have__builtin_unreachable])
-+
- AC_MSG_CHECKING([for __sync atomics])
- AC_LINK_IFELSE(
-   [AC_LANG_PROGRAM([[]], [[
---- a/include/libunwind_i.h
-+++ b/include/libunwind_i.h
-@@ -72,6 +72,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE
- # endif
- #endif
- 
-+#if defined(HAVE__BUILTIN_UNREACHABLE)
-+# define unreachable() __builtin_unreachable()
-+#else
-+# define unreachable() do { } while (1)
-+#endif
-+
- #ifdef DEBUG
- # define UNW_DEBUG	1
- #else
---- a/src/arm/Gresume.c
-+++ b/src/arm/Gresume.c
-@@ -96,7 +96,7 @@ arm_local_resume (unw_addr_space_t as, u
- 	: : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc)
-       );
-    }
--  __builtin_unreachable();
-+  unreachable();
- #else
-   printf ("%s: implement me\n", __FUNCTION__);
- #endif
---- a/src/sh/Gresume.c
-+++ b/src/sh/Gresume.c
-@@ -109,7 +109,7 @@ sh_local_resume (unw_addr_space_t as, un
- 	  "r" (c->sigcontext_pc)
-       );
-    }
--  __builtin_unreachable();
-+  unreachable();
- #endif
-   return -UNW_EINVAL;
- }
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch b/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch
similarity index 68%
rename from meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch
rename to meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch
index 5426fcc..8bcc252 100644
--- a/meta/recipes-support/libunwind/libunwind-1.1/0001-Fix-build-on-mips-musl.patch
+++ b/meta/recipes-support/libunwind/libunwind/0001-Fix-build-on-mips-musl.patch
@@ -15,23 +15,17 @@ Upstream-Status: Pending
  src/mips/getcontext.S        |  3 +--
  2 files changed, 35 insertions(+), 2 deletions(-)
 
-diff --git a/src/coredump/_UCD_internal.h b/src/coredump/_UCD_internal.h
-index 3c95a2a..80acc15 100644
---- a/src/coredump/_UCD_internal.h
-+++ b/src/coredump/_UCD_internal.h
-@@ -34,6 +34,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
- #ifdef HAVE_SYS_PROCFS_H
- #include <sys/procfs.h> /* struct elf_prstatus */
- #endif
-+#include <sys/reg.h>
- #include <errno.h>
- #include <string.h>
- #include <limits.h>
-@@ -44,6 +45,39 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+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 <sys/reg.h>
++
 +#define EF_REG0			6
 +#define EF_REG1			7
 +#define EF_REG2			8
@@ -67,11 +61,11 @@ index 3c95a2a..80acc15 100644
  
  #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
+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"
@@ -85,6 +79,3 @@ index d1dbd57..de9b681 100644
  #  define OFFSET 4
  # else
  #  define OFFSET 0
--- 
-1.8.3.1
-
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/0001-backtrace-Use-only-with-glibc-and-uclibc.patch b/meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
similarity index 100%
rename from meta/recipes-support/libunwind/libunwind-1.1/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
rename to meta/recipes-support/libunwind/libunwind/0001-backtrace-Use-only-with-glibc-and-uclibc.patch
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/0001-x86-Stub-out-x86_local_resume.patch b/meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch
similarity index 100%
rename from meta/recipes-support/libunwind/libunwind-1.1/0001-x86-Stub-out-x86_local_resume.patch
rename to meta/recipes-support/libunwind/libunwind/0001-x86-Stub-out-x86_local_resume.patch
diff --git a/meta/recipes-support/libunwind/libunwind-1.1/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
similarity index 100%
rename from meta/recipes-support/libunwind/libunwind-1.1/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
rename to meta/recipes-support/libunwind/libunwind/Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
diff --git a/meta/recipes-support/libunwind/libunwind_1.1.bb b/meta/recipes-support/libunwind/libunwind_1.1.bb
deleted file mode 100644
index 1e76c1a..0000000
--- a/meta/recipes-support/libunwind/libunwind_1.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require libunwind.inc
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
-           file://Support-building-with-older-compilers.patch \
-           file://AArch64-port.patch \
-           file://Fix-test-case-link-failure-on-PowerPC-systems-with-Altivec.patch \
-           file://Link-libunwind-to-libgcc_s-rather-than-libgcc.patch \
-           file://0001-Invalid-dwarf-opcodes-can-cause-references-beyond-th.patch \
-           file://Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \
-           file://0001-backtrace-Use-only-with-glibc-and-uclibc.patch \
-           file://0001-aarch64-introduce-build-support-for-aarch64_be-targe.patch \
-           file://0002-aarch64-fix-wrong-big_endian-flag-in-aarch64_be-case.patch \
-"
-SRC_URI_append_libc-musl = "\
-           file://0001-x86-Stub-out-x86_local_resume.patch \
-           file://0001-disable-tests.patch \
-           file://0001-Fix-build-on-mips-musl.patch \
-"
-SRC_URI[md5sum] = "fb4ea2f6fbbe45bf032cd36e586883ce"
-SRC_URI[sha256sum] = "9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a"
-
-# http://errors.yoctoproject.org/Errors/Details/20487/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/meta/recipes-support/libunwind/libunwind_git.bb b/meta/recipes-support/libunwind/libunwind_git.bb
new file mode 100644
index 0000000..0949a32
--- /dev/null
+++ b/meta/recipes-support/libunwind/libunwind_git.bb
@@ -0,0 +1,25 @@
+require libunwind.inc
+
+PV = "1.1+git${SRCPV}"
+
+SRCREV = "bc8698fd7ed13a629a8ec3cb2a89bd74f9d8b5c0"
+
+SRC_URI = "git://git.sv.gnu.org/libunwind.git \
+           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 \
+"
+
+EXTRA_OECONF_append_libc-musl = " --disable-documentation"
+
+# http://errors.yoctoproject.org/Errors/Details/20487/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+# see https://sourceware.org/bugzilla/show_bug.cgi?id=19987
+SECURITY_CFLAGS_remove_aarch64 = "-fpie"
+SECURITY_CFLAGS_append_aarch64 = " -fPIE"
+
+S = "${WORKDIR}/git"
+
-- 
2.8.2



  parent reply	other threads:[~2016-05-11 17:36 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-11 17:35 [PATCH 00/42] GCC/GDB/Binutils Upgrades Khem Raj
2016-05-11 17:35 ` [PATCH 01/42] gcc: Add gcc6 recipes Khem Raj
2016-05-31  8:12   ` Jussi Kukkonen
2016-05-31 22:20     ` Paul Eggleton
2016-05-31 22:23       ` Paul Eggleton
2016-06-02 16:05         ` Martin Jansa
2016-06-02 19:15           ` Paul Eggleton
2016-06-02 19:19             ` Bruce Ashfield
2016-06-02 19:24               ` Paul Eggleton
2016-06-02 19:30                 ` Bruce Ashfield
2016-06-02 19:38                   ` Paul Eggleton
2016-06-02 19:43                     ` Bruce Ashfield
2016-06-02 22:18                 ` Christopher Larson
2016-05-11 17:35 ` [PATCH 02/42] glibc: Add recipes for 2.24 release Khem Raj
2016-05-12  5:50   ` Khem Raj
2016-05-11 17:35 ` [PATCH 03/42] glib-2.0: Ignore useless warning found with gcc-6 Khem Raj
2016-05-11 17:35 ` [PATCH 04/42] elfutils: Upgrade to 0.166 Khem Raj
2016-05-11 17:35 ` [PATCH 05/42] rpm: Fix build with gcc6 Khem Raj
2016-05-11 17:35 ` [PATCH 06/42] alsa-tools: " Khem Raj
2016-05-11 17:35 ` [PATCH 07/42] lzop: Fix build with gcc-6 Khem Raj
2016-05-11 17:35 ` [PATCH 08/42] webkitgtk: Upgrade to 2.12.1 Khem Raj
2016-05-11 17:35 ` [PATCH 09/42] oprofile: Fix with gcc6 Khem Raj
2016-05-11 17:35 ` [PATCH 10/42] mdadm: Fix gcc 6 warnings Khem Raj
2016-05-11 17:35 ` [PATCH 11/42] nss: Upgrade to 3.23 Khem Raj
2016-05-11 17:35 ` [PATCH 12/42] pkgconfig: Fix build with gcc-6 and upgrade to 0.29.1 Khem Raj
2016-05-11 17:35 ` [PATCH 13/42] binutils: disable werror on native build Khem Raj
2016-05-11 17:35 ` [PATCH 14/42] grub: Fix build with gcc-6 Khem Raj
2016-05-11 17:35 ` [PATCH 15/42] valgrind: Fix build with gcc6 Khem Raj
2016-05-11 17:35 ` [PATCH 16/42] busybox/mdev: Ensure /sys is mounted before using it Khem Raj
2016-05-12 12:58   ` Andreas Oberritter
2016-05-11 17:35 ` [PATCH 17/42] libc-common.bbclass: Use sed instead of grep Khem Raj
2016-05-11 17:35 ` [PATCH 18/42] conf: bump minimum kernel to 3.2.0 Khem Raj
2016-05-12 17:18   ` Ruslan Bilovol
2016-05-12 18:26     ` Khem Raj
2016-05-11 17:35 ` [PATCH 19/42] systemd: Create missing sysusers offline Khem Raj
2016-05-13 12:44   ` Richard Purdie
2016-05-11 17:35 ` [PATCH 20/42] grub_git: Upgrade to latest tip Khem Raj
2016-05-11 17:35 ` Khem Raj [this message]
2016-05-11 17:35 ` [PATCH 22/42] linux-yocto: Fix build on ppc with gcc-6 Khem Raj
2016-05-11 21:27   ` Bruce Ashfield
2016-05-11 21:30     ` Khem Raj
2016-05-11 21:36       ` Bruce Ashfield
2016-05-11 21:55         ` Khem Raj
2016-05-12  4:31           ` Bruce Ashfield
2016-05-12 13:28             ` Bruce Ashfield
2016-05-12 14:21               ` Khem Raj
2016-05-12 14:27                 ` Bruce Ashfield
2016-05-12 14:27                   ` Khem Raj
2016-05-12 15:52                     ` Khem Raj
2016-05-11 17:35 ` [PATCH 23/42] linux-yocto: Fix build with gcc6 on mips Khem Raj
2016-05-11 17:35 ` [PATCH 24/42] python-native: Point to expat in native sysroot Khem Raj
2016-05-12  6:26   ` Khem Raj
2016-05-11 17:35 ` [PATCH 25/42] bitbake.conf: Empty out BUILDSDK_CPPFLAGS Khem Raj
2016-05-11 17:35 ` [PATCH 26/42] strace: Remove pipe.expected Khem Raj
2016-05-11 17:42   ` Khem Raj
2016-05-11 17:35 ` [PATCH 27/42] musl: Upgrade to tip of tree Khem Raj
2016-05-11 17:35 ` [PATCH 28/42] libgcc: Ensure that gcc configure options are passed to libgcc too Khem Raj
2016-05-11 17:35 ` [PATCH 29/42] libunwind: Upgrade to 1.2rc1+ Khem Raj
2016-05-11 17:35 ` [PATCH 30/42] libgcc: Ensure that gcc configure options are passed to libgcc too Khem Raj
2016-05-11 17:35 ` [PATCH 31/42] gdb,strace: Fix builds on ppc/musl Khem Raj
2016-05-11 17:35 ` [PATCH 32/42] libunwind: Add a confgure option for tests Khem Raj
2016-05-11 17:35 ` [PATCH 33/42] gdb: Upgrade to 7.11 Khem Raj
2016-05-12  5:48   ` Khem Raj
2016-05-11 17:35 ` [PATCH 34/42] gdb: Disable binutils components Khem Raj
2016-05-11 17:35 ` [PATCH 35/42] tcmode-default: Bump gcc,glibc,gdb Khem Raj
2016-05-11 17:35 ` [PATCH 36/42] bitbake: Oldest kernel for nios2 is 3.19 Khem Raj
2016-05-11 17:35 ` [PATCH 37/42] musl: Create symlinks for stub libraries Khem Raj
2016-05-11 17:35 ` [PATCH 38/42] mdadm: Fix build with clang Khem Raj
2016-05-11 17:35 ` [PATCH 39/42] distcc: Upgrade to 3.2 Khem Raj
2016-05-11 17:35 ` [PATCH 40/42] ruby: Upgrade to 2.2.5 Khem Raj
2016-05-11 17:35 ` [PATCH 41/42] mpfr: Upgrade to 3.1.4 Khem Raj
2016-05-11 17:35 ` [PATCH 42/42] gcc-runtime, libgcc: Symlink c++ header and startup files in target_triplet for SDK use Khem Raj
2016-05-12  9:05 ` [PATCH 00/42] GCC/GDB/Binutils Upgrades Ioan-Adrian Ratiu
2016-05-12 14:19   ` akuster808
2016-05-12 14:33     ` Ioan-Adrian Ratiu
2016-05-13 12:47 ` Richard Purdie
2016-05-13 16:48   ` Khem Raj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a92169b3ee570ce15be6d4e1b6df873d2f264bac.1462987863.git.raj.khem@gmail.com \
    --to=raj.khem@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.