libunwind: backport aarch64_be support

Backport 2 patches from v1.2-rc1 tag of libunwind git repo.
These patches add aarch64_be support to this package.

(From OE-Core rev: 396353c3127b20244c4c5cc321adad7d4e48f544)

Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ruslan Bilovol
2016-04-18 14:14:07 +03:00
committed by Richard Purdie
parent e7d3dcbcbb
commit 9c812e7d3c
3 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
From 743668f66916b6bb03c92b04be5216400951ace6 Mon Sep 17 00:00:00 2001
From: Victor Kamensky <victor.kamensky@linaro.org>
Date: Wed, 3 Dec 2014 17:35:43 -0800
Subject: [PATCH 1/2] aarch64: introduce build support for aarch64_be target
Upstream-Status: backport
Introduce support for aarch64_be, aarch64 big endian, target.
We would like to reuse all code that was done for aarch64
(little endian) target. So we do similar thing that is done
for ARM v7 (arm) target for any aarch64* arch we set it
just to aarch64.
Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
---
configure.ac | 1 +
1 file changed, 1 insertion(+)
diff --git a/configure.ac b/configure.ac
index 582e71f..c59f526 100644
--- a/configure.ac
+++ b/configure.ac
@@ -88,6 +88,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
AC_DEFUN([SET_ARCH],[
AS_CASE([$1],
+ [aarch64*],[$2=aarch64],
[arm*],[$2=arm],
[i?86],[$2=x86],
[hppa*],[$2=hppa],
--
1.9.1

View File

@@ -0,0 +1,34 @@
From 16e98c8cf37b006c3879ee57acc23c9af13c40d5 Mon Sep 17 00:00:00 2001
From: Victor Kamensky <victor.kamensky@linaro.org>
Date: Wed, 3 Dec 2014 17:35:44 -0800
Subject: [PATCH 2/2] aarch64: fix wrong big_endian flag in aarch64_be case
Upstream-Status: backport
Set local_addr_space.big_endian flag according to current target
endianness. Before it was set by memset to 0, which corresponds
to little endian and it worked perfectly fine for aarch64.
But it breaks aarch64_be because dwarf_readu16, dwarf_readu32,
etc functions do not read values correctly since they operate
with wrong idea about current target endianness.
Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
---
src/aarch64/Ginit.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/aarch64/Ginit.c b/src/aarch64/Ginit.c
index 0bc8997..b9181ef 100644
--- a/src/aarch64/Ginit.c
+++ b/src/aarch64/Ginit.c
@@ -181,6 +181,7 @@ aarch64_local_addr_space_init (void)
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;
+ local_addr_space.big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
unw_flush_cache (&local_addr_space, 0, 0);
}
--
1.9.1

View File

@@ -8,6 +8,8 @@ SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
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 \