svn commit: r473531 - in head/devel/libunwind: . files
Mark Linimon
linimon at FreeBSD.org
Fri Jun 29 07:48:44 UTC 2018
Author: linimon
Date: Fri Jun 29 07:48:42 2018
New Revision: 473531
URL: https://svnweb.freebsd.org/changeset/ports/473531
Log:
Port to aarch64. Tested for no-harm on amd64.
While here, pet portlint.
PR: 229057
Submitted by: greg at unrelenting.technology
Approved by: portmgr (tier-2 blanket)
Added:
head/devel/libunwind/files/patch-include_libunwind-aarch64.h (contents, props changed)
head/devel/libunwind/files/patch-include_libunwind__i.h (contents, props changed)
head/devel/libunwind/files/patch-src_aarch64_Ginit.c (contents, props changed)
head/devel/libunwind/files/patch-src_coredump___UCD__access__reg__freebsd.c (contents, props changed)
head/devel/libunwind/files/patch-src_ptrace___UPT__access__fpreg.c (contents, props changed)
Modified:
head/devel/libunwind/Makefile
Modified: head/devel/libunwind/Makefile
==============================================================================
--- head/devel/libunwind/Makefile Fri Jun 29 07:36:14 2018 (r473530)
+++ head/devel/libunwind/Makefile Fri Jun 29 07:48:42 2018 (r473531)
@@ -13,17 +13,17 @@ COMMENT= Generic stack unwinding library
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/COPYING
+ONLY_FOR_ARCHS= aarch64 amd64 i386
+
OPTIONS_DEFINE= DOCS
OPTIONS_SUB= yes
DOCS_CONFIGURE_ON= ac_cv_path_LATEX2MAN=${TRUE}
DOCS_CONFIGURE_OFF= --disable-documentation
-ONLY_FOR_ARCHS= i386 amd64
-
+USES= libtool pathfix pkgconfig
+USE_LDCONFIG= yes
GNU_CONFIGURE= yes
INSTALL_TARGET= install-strip
-USE_LDCONFIG= yes
-USES= libtool pathfix pkgconfig
LLD_UNSAFE= yes
PLIST_SUB= ARCH=${ARCH:S|i386|x86|:S|amd64|x86_64|}
Added: head/devel/libunwind/files/patch-include_libunwind-aarch64.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libunwind/files/patch-include_libunwind-aarch64.h Fri Jun 29 07:48:42 2018 (r473531)
@@ -0,0 +1,11 @@
+--- include/libunwind-aarch64.h.orig 2018-06-15 23:58:09 UTC
++++ include/libunwind-aarch64.h
+@@ -177,7 +177,7 @@ typedef ucontext_t unw_tdep_context_t;
+
+ #define unw_tdep_getcontext(uc) (({ \
+ unw_tdep_context_t *unw_ctx = (uc); \
+- register uint64_t *unw_base asm ("x0") = (uint64_t*) unw_ctx->uc_mcontext.regs; \
++ register uint64_t *unw_base asm ("x0") = (uint64_t*) unw_ctx->uc_mcontext.mc_gpregs.gp_x; \
+ __asm__ __volatile__ ( \
+ "stp x0, x1, [%[base], #0]\n" \
+ "stp x2, x3, [%[base], #16]\n" \
Added: head/devel/libunwind/files/patch-include_libunwind__i.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libunwind/files/patch-include_libunwind__i.h Fri Jun 29 07:48:42 2018 (r473531)
@@ -0,0 +1,14 @@
+--- include/libunwind_i.h.orig 2018-06-15 23:58:15 UTC
++++ include/libunwind_i.h
+@@ -86,6 +86,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # error Host has unknown byte-order.
+ # endif
+ #endif
++#ifdef __FreeBSD__
++#define __BYTE_ORDER BYTE_ORDER
++#define __LITTLE_ENDIAN LITTLE_ENDIAN
++#define __BIG_ENDIAN BIG_ENDIAN
++#endif
+
+ #if defined(HAVE__BUILTIN_UNREACHABLE)
+ # define unreachable() __builtin_unreachable()
Added: head/devel/libunwind/files/patch-src_aarch64_Ginit.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libunwind/files/patch-src_aarch64_Ginit.c Fri Jun 29 07:48:42 2018 (r473531)
@@ -0,0 +1,11 @@
+--- src/aarch64/Ginit.c.orig 2018-06-15 23:58:20 UTC
++++ src/aarch64/Ginit.c
+@@ -44,7 +44,7 @@ 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];
++ return &uc->uc_mcontext.mc_gpregs.gp_x[reg];
+ else
+ return NULL;
+ }
Added: head/devel/libunwind/files/patch-src_coredump___UCD__access__reg__freebsd.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libunwind/files/patch-src_coredump___UCD__access__reg__freebsd.c Fri Jun 29 07:48:42 2018 (r473531)
@@ -0,0 +1,13 @@
+--- src/coredump/_UCD_access_reg_freebsd.c.orig 2018-06-16 00:05:10 UTC
++++ src/coredump/_UCD_access_reg_freebsd.c
+@@ -110,6 +110,10 @@ _UCD_access_reg (unw_addr_space_t as,
+ Debug(0, "bad regnum:%d\n", regnum);
+ return -UNW_EINVAL;
+ };
++#elif defined(UNW_TARGET_AARCH64)
++ if (regnum < 0 || regnum >= UNW_AARCH64_FPCR)
++ return -UNW_EINVAL;
++ *valp = ui->prstatus->pr_reg.x[regnum];
+ #else
+ #error Port me
+ #endif
Added: head/devel/libunwind/files/patch-src_ptrace___UPT__access__fpreg.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libunwind/files/patch-src_ptrace___UPT__access__fpreg.c Fri Jun 29 07:48:42 2018 (r473531)
@@ -0,0 +1,20 @@
+--- src/ptrace/_UPT_access_fpreg.c.orig 2018-06-15 23:58:03 UTC
++++ src/ptrace/_UPT_access_fpreg.c
+@@ -85,6 +85,8 @@ _UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t r
+ memcpy(&fpreg.fpr_xacc[reg], val, sizeof(unw_fpreg_t));
+ #elif defined(__i386__)
+ memcpy(&fpreg.fpr_acc[reg], val, sizeof(unw_fpreg_t));
++#elif defined(__aarch64__)
++ memcpy(&fpreg.fp_q[reg], val, sizeof(unw_fpreg_t));
+ #else
+ #error Fix me
+ #endif
+@@ -95,6 +97,8 @@ _UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t r
+ memcpy(val, &fpreg.fpr_xacc[reg], sizeof(unw_fpreg_t));
+ #elif defined(__i386__)
+ memcpy(val, &fpreg.fpr_acc[reg], sizeof(unw_fpreg_t));
++#elif defined(__aarch64__)
++ memcpy(val, &fpreg.fp_q[reg], sizeof(unw_fpreg_t));
+ #else
+ #error Fix me
+ #endif
More information about the svn-ports-all
mailing list