Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jun 2018 07:48:42 +0000 (UTC)
From:      Mark Linimon <linimon@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r473531 - in head/devel/libunwind: . files
Message-ID:  <201806290748.w5T7mgnK082434@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806290748.w5T7mgnK082434>