git: 987c1ed1c3c2 - main - devel/libunwind: Update to 20211201 (1.6.2)
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Mar 2022 18:16:21 UTC
The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=987c1ed1c3c2ea445e5173226ed393e3003a03f9 commit 987c1ed1c3c2ea445e5173226ed393e3003a03f9 Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org> AuthorDate: 2022-03-07 17:50:14 +0000 Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org> CommitDate: 2022-03-07 18:10:55 +0000 devel/libunwind: Update to 20211201 (1.6.2) Changes: https://github.com/libunwind/libunwind/releases PR: 262257 Exp-run by: antoine --- devel/libunwind/Makefile | 4 +- devel/libunwind/distinfo | 6 +- devel/libunwind/files/patch-powerpc64 | 465 ---------------------------------- 3 files changed, 5 insertions(+), 470 deletions(-) diff --git a/devel/libunwind/Makefile b/devel/libunwind/Makefile index c863786cbfe6..07120c1e4214 100644 --- a/devel/libunwind/Makefile +++ b/devel/libunwind/Makefile @@ -1,11 +1,11 @@ # Created by: stas@FreeBSD.org PORTNAME= libunwind -PORTVERSION= 20201110 # This is the release date on https://download.savannah.gnu.org/releases/libunwind/ +PORTVERSION= 20211201 # This is the release date on https://download.savannah.gnu.org/releases/libunwind/ CATEGORIES= devel MASTER_SITES= SAVANNAH \ https://github.com/libunwind/libunwind/releases/download/v${PORTVERSION}/ -DISTNAME= ${PORTNAME}-1.5.0 +DISTNAME= ${PORTNAME}-1.6.2 MAINTAINER= sunpoet@FreeBSD.org COMMENT= Generic stack unwinding library diff --git a/devel/libunwind/distinfo b/devel/libunwind/distinfo index 068be3fc37f7..a359c5a1a385 100644 --- a/devel/libunwind/distinfo +++ b/devel/libunwind/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1605863812 -SHA256 (libunwind-1.5.0.tar.gz) = 90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017 -SIZE (libunwind-1.5.0.tar.gz) = 878355 +TIMESTAMP = 1646075307 +SHA256 (libunwind-1.6.2.tar.gz) = 4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976 +SIZE (libunwind-1.6.2.tar.gz) = 901392 diff --git a/devel/libunwind/files/patch-powerpc64 b/devel/libunwind/files/patch-powerpc64 deleted file mode 100644 index caad5be9f129..000000000000 --- a/devel/libunwind/files/patch-powerpc64 +++ /dev/null @@ -1,465 +0,0 @@ ---- configure.orig 2020-03-31 15:39:07 UTC -+++ configure -@@ -17828,13 +17828,6 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_dwarf" >&5 - $as_echo "$use_dwarf" >&6; } - --if test x$target_arch = xppc64; then -- libdir='${exec_prefix}/lib64' -- { $as_echo "$as_me:${as_lineno-$LINENO}: PowerPC64 detected, lib will be installed ${libdir}" >&5 --$as_echo "$as_me: PowerPC64 detected, lib will be installed ${libdir}" >&6;}; -- --fi -- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to restrict build to remote support" >&5 - $as_echo_n "checking whether to restrict build to remote support... " >&6; } - if test x$target_arch != x$host_arch; then ---- src/ppc64/Ginit.c.orig 2020-09-07 19:49:32 UTC -+++ src/ppc64/Ginit.c -@@ -48,13 +48,25 @@ uc_addr (ucontext_t *uc, int reg) - void *addr; - - if ((unsigned) (reg - UNW_PPC64_R0) < 32) -+#if defined(__linux__) - addr = &uc->uc_mcontext.gp_regs[reg - UNW_PPC64_R0]; -+#elif defined(__FreeBSD__) -+ addr = &uc->uc_mcontext.mc_gpr[reg - UNW_PPC64_R0]; -+#endif - - else if ((unsigned) (reg - UNW_PPC64_F0) < 32) -+#if defined(__linux__) - addr = &uc->uc_mcontext.fp_regs[reg - UNW_PPC64_F0]; -+#elif defined(__FreeBSD__) -+ addr = &uc->uc_mcontext.mc_fpreg[reg - UNW_PPC64_F0]; -+#endif - - else if ((unsigned) (reg - UNW_PPC64_V0) < 32) -+#if defined(__linux__) - addr = (uc->uc_mcontext.v_regs == 0) ? NULL : &uc->uc_mcontext.v_regs->vrregs[reg - UNW_PPC64_V0][0]; -+#elif defined(__FreeBSD__) -+ addr = &uc->uc_mcontext.mc_avec[(reg - UNW_PPC64_V0)*2]; -+#endif - - else - { -@@ -80,7 +92,11 @@ uc_addr (ucontext_t *uc, int reg) - default: - return NULL; - } -+#if defined(__linux__) - addr = &uc->uc_mcontext.gp_regs[gregs_idx]; -+#elif defined(__FreeBSD__) -+ addr = &uc->uc_mcontext.mc_gpr[gregs_idx]; -+#endif - } - return addr; - } ---- src/ppc64/Gstep.c.orig 2018-12-20 18:09:57 UTC -+++ src/ppc64/Gstep.c -@@ -139,8 +139,8 @@ unw_step (unw_cursor_t * cursor) - c->sigcontext_format = PPC_SCF_LINUX_RT_SIGFRAME; - c->sigcontext_addr = ucontext; - -- sp_loc = DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R1, 0); -- ip_loc = DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_NIP, 0); -+ sp_loc = DWARF_LOC ((ucontext + UC_MCONTEXT_GREGS_R1), 0); -+ ip_loc = DWARF_LOC ((ucontext + UC_MCONTEXT_GREGS_NIP), 0); - - ret = dwarf_get (&c->dwarf, sp_loc, &c->dwarf.cfa); - if (ret < 0) -@@ -311,8 +311,15 @@ unw_step (unw_cursor_t * cursor) - /* Note that there is no .eh_section register column for the - FPSCR register. I don't know why this is. */ - -+#if defined(__linux__) - v_regs_loc = DWARF_LOC (ucontext + UC_MCONTEXT_V_REGS, 0); - ret = dwarf_get (&c->dwarf, v_regs_loc, &v_regs_ptr); -+#elif defined(__FreeBSD__) -+ /* Offset into main structure. */ -+ v_regs_ptr = (ucontext + UC_MCONTEXT_V_REGS); -+ ret = 0; -+#endif -+ - if (ret < 0) - { - Debug (2, "returning %d\n", ret); ---- src/ppc64/ucontext_i.h.orig 2018-12-20 00:06:45 UTC -+++ src/ppc64/ucontext_i.h -@@ -28,6 +28,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - #include <ucontext.h> - -+#if defined(__linux__) - /* These values were derived by reading - /usr/src/linux-2.6.18-1.8/arch/um/include/sysdep-ppc/ptrace.h and - /usr/src/linux-2.6.18-1.8/arch/powerpc/kernel/ppc32.h -@@ -49,125 +50,177 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - #define VSCR_IDX 32 - #define VRSAVE_IDX 33 - -+#define UC_MCONTEXT_V_REGS ( ((void *)&dmy_ctxt.uc_mcontext.v_regs - (void *)&dmy_ctxt) ) -+ -+#define _UC_MCONTEXT_GPR(x) ( (void *)&dmy_ctxt.uc_mcontext.gp_regs[x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_FPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.fp_regs[x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_VR(x) ( ((void *)&dmy_vrregset.vrregs[x] - (void *)&dmy_vrregset) ) -+ - /* These are dummy structures used only for obtaining the offsets of the - various structure members. */ - static ucontext_t dmy_ctxt; - static vrregset_t dmy_vrregset; - --#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[0] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[1] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[2] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[3] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[4] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[5] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[6] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[7] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[8] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[9] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[10] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[11] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[12] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[13] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[14] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[15] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[16] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[17] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[18] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[19] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[20] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[21] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[22] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[23] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[24] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[25] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[26] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[27] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[28] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[29] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[30] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[31] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_NIP ((void *)&dmy_ctxt.uc_mcontext.gp_regs[NIP_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[MSR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[CTR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.gp_regs[LINK_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.gp_regs[XER_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[CCR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.gp_regs[SOFTE_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.gp_regs[TRAP_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[DAR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[DSISR_IDX] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.gp_regs[RESULT_IDX] - (void *)&dmy_ctxt) -+#elif defined(__FreeBSD__) -+/* See /usr/src/sys/powerpc/include/ucontext.h. -+ FreeBSD uses a different structure than Linux. -+*/ - --#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[0] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[1] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[2] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[3] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[4] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[5] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[6] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[7] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[8] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[9] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[10] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[11] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[12] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[13] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[14] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[15] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[16] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[17] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[18] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[19] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[20] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[21] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[22] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[23] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[24] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[25] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[26] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[27] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[28] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[29] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[30] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[31] - (void *)&dmy_ctxt) --#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.fp_regs[32] - (void *)&dmy_ctxt) -+#define NIP_IDX 36 -+#define MSR_IDX 37 -+//#define ORIG_GPR3_IDX -+#define CTR_IDX 35 -+#define LINK_IDX 32 -+#define XER_IDX 34 -+#define CCR_IDX 33 -+//#define SOFTE_IDX -+//#define TRAP_IDX -+#define DAR_IDX 39 -+#define DSISR_IDX 40 -+//#define RESULT_IDX - --#define UC_MCONTEXT_V_REGS ((void *)&dmy_ctxt.uc_mcontext.v_regs - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_V_REGS (((void *)&dmy_ctxt.mc_avec - (void *)&dmy_ctxt)) - --#define UC_MCONTEXT_VREGS_R0 ((void *)&dmy_vrregset.vrregs[0] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R1 ((void *)&dmy_vrregset.vrregs[1] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R2 ((void *)&dmy_vrregset.vrregs[2] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R3 ((void *)&dmy_vrregset.vrregs[3] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R4 ((void *)&dmy_vrregset.vrregs[4] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R5 ((void *)&dmy_vrregset.vrregs[5] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R6 ((void *)&dmy_vrregset.vrregs[6] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R7 ((void *)&dmy_vrregset.vrregs[7] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R8 ((void *)&dmy_vrregset.vrregs[8] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R9 ((void *)&dmy_vrregset.vrregs[9] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R10 ((void *)&dmy_vrregset.vrregs[10] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R11 ((void *)&dmy_vrregset.vrregs[11] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R12 ((void *)&dmy_vrregset.vrregs[12] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R13 ((void *)&dmy_vrregset.vrregs[13] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R14 ((void *)&dmy_vrregset.vrregs[14] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R15 ((void *)&dmy_vrregset.vrregs[15] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R16 ((void *)&dmy_vrregset.vrregs[16] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R17 ((void *)&dmy_vrregset.vrregs[17] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R18 ((void *)&dmy_vrregset.vrregs[18] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R19 ((void *)&dmy_vrregset.vrregs[19] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R20 ((void *)&dmy_vrregset.vrregs[20] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R21 ((void *)&dmy_vrregset.vrregs[21] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R22 ((void *)&dmy_vrregset.vrregs[22] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R23 ((void *)&dmy_vrregset.vrregs[23] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R24 ((void *)&dmy_vrregset.vrregs[24] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R25 ((void *)&dmy_vrregset.vrregs[25] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R26 ((void *)&dmy_vrregset.vrregs[26] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R27 ((void *)&dmy_vrregset.vrregs[27] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R28 ((void *)&dmy_vrregset.vrregs[28] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R29 ((void *)&dmy_vrregset.vrregs[29] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R30 ((void *)&dmy_vrregset.vrregs[30] - (void *)&dmy_vrregset) --#define UC_MCONTEXT_VREGS_R31 ((void *)&dmy_vrregset.vrregs[31] - (void *)&dmy_vrregset) -+#define _UC_MCONTEXT_GPR(_x) ( ((void *)&dmy_ctxt.mc_gpr[_x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_FPR(_x) ( ((void *)&dmy_ctxt.mc_fpreg[_x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_VR(_x) ( ((void *)&dmy_ctxt.mc_avec[_x] - (void *)&dmy_ctxt.mc_avec) ) -+ -+/* These are dummy structures used only for obtaining the offsets of the -+ various structure members. */ -+static struct __mcontext dmy_ctxt; -+ -+#else -+#error "Not implemented!" -+#endif -+ -+#define UC_MCONTEXT_GREGS_R0 _UC_MCONTEXT_GPR(0) -+#define UC_MCONTEXT_GREGS_R1 _UC_MCONTEXT_GPR(1) -+#define UC_MCONTEXT_GREGS_R2 _UC_MCONTEXT_GPR(2) -+#define UC_MCONTEXT_GREGS_R3 _UC_MCONTEXT_GPR(3) -+#define UC_MCONTEXT_GREGS_R4 _UC_MCONTEXT_GPR(4) -+#define UC_MCONTEXT_GREGS_R5 _UC_MCONTEXT_GPR(5) -+#define UC_MCONTEXT_GREGS_R6 _UC_MCONTEXT_GPR(6) -+#define UC_MCONTEXT_GREGS_R7 _UC_MCONTEXT_GPR(7) -+#define UC_MCONTEXT_GREGS_R8 _UC_MCONTEXT_GPR(8) -+#define UC_MCONTEXT_GREGS_R9 _UC_MCONTEXT_GPR(9) -+#define UC_MCONTEXT_GREGS_R10 _UC_MCONTEXT_GPR(10) -+#define UC_MCONTEXT_GREGS_R11 _UC_MCONTEXT_GPR(11) -+#define UC_MCONTEXT_GREGS_R12 _UC_MCONTEXT_GPR(12) -+#define UC_MCONTEXT_GREGS_R13 _UC_MCONTEXT_GPR(13) -+#define UC_MCONTEXT_GREGS_R14 _UC_MCONTEXT_GPR(14) -+#define UC_MCONTEXT_GREGS_R15 _UC_MCONTEXT_GPR(15) -+#define UC_MCONTEXT_GREGS_R16 _UC_MCONTEXT_GPR(16) -+#define UC_MCONTEXT_GREGS_R17 _UC_MCONTEXT_GPR(17) -+#define UC_MCONTEXT_GREGS_R18 _UC_MCONTEXT_GPR(18) -+#define UC_MCONTEXT_GREGS_R19 _UC_MCONTEXT_GPR(19) -+#define UC_MCONTEXT_GREGS_R20 _UC_MCONTEXT_GPR(20) -+#define UC_MCONTEXT_GREGS_R21 _UC_MCONTEXT_GPR(21) -+#define UC_MCONTEXT_GREGS_R22 _UC_MCONTEXT_GPR(22) -+#define UC_MCONTEXT_GREGS_R23 _UC_MCONTEXT_GPR(23) -+#define UC_MCONTEXT_GREGS_R24 _UC_MCONTEXT_GPR(24) -+#define UC_MCONTEXT_GREGS_R25 _UC_MCONTEXT_GPR(25) -+#define UC_MCONTEXT_GREGS_R26 _UC_MCONTEXT_GPR(26) -+#define UC_MCONTEXT_GREGS_R27 _UC_MCONTEXT_GPR(27) -+#define UC_MCONTEXT_GREGS_R28 _UC_MCONTEXT_GPR(28) -+#define UC_MCONTEXT_GREGS_R29 _UC_MCONTEXT_GPR(29) -+#define UC_MCONTEXT_GREGS_R30 _UC_MCONTEXT_GPR(30) -+#define UC_MCONTEXT_GREGS_R31 _UC_MCONTEXT_GPR(31) -+#define UC_MCONTEXT_GREGS_NIP _UC_MCONTEXT_GPR(NIP_IDX) -+#define UC_MCONTEXT_GREGS_MSR _UC_MCONTEXT_GPR(MSR_IDX) -+#ifdef ORIG_GPR3_IDX -+#define UC_MCONTEXT_GREGS_ORIG_GPR3 _UC_MCONTEXT_GPR(ORIG_GPR3_IDX) -+#endif -+#define UC_MCONTEXT_GREGS_CTR _UC_MCONTEXT_GPR(CTR_IDX) -+#define UC_MCONTEXT_GREGS_LINK _UC_MCONTEXT_GPR(LINK_IDX) -+#define UC_MCONTEXT_GREGS_XER _UC_MCONTEXT_GPR(XER_IDX) -+#define UC_MCONTEXT_GREGS_CCR _UC_MCONTEXT_GPR(CCR_IDX) -+#ifdef SOFTE_IDX -+#define UC_MCONTEXT_GREGS_SOFTE _UC_MCONTEXT_GPR(SOFTE_IDX) -+#endif -+#ifdef TRAP_IDX -+#define UC_MCONTEXT_GREGS_TRAP _UC_MCONTEXT_GPR(TRAP_IDX) -+#endif -+#define UC_MCONTEXT_GREGS_DAR _UC_MCONTEXT_GPR(DAR_IDX) -+#define UC_MCONTEXT_GREGS_DSISR _UC_MCONTEXT_GPR(DSISR_IDX) -+#ifdef RESULT_IDX -+#define UC_MCONTEXT_GREGS_RESULT _UC_MCONTEXT_GPR(RESULT_IDX) -+#endif -+ -+#define UC_MCONTEXT_FREGS_R0 _UC_MCONTEXT_FPR(0) -+#define UC_MCONTEXT_FREGS_R1 _UC_MCONTEXT_FPR(1) -+#define UC_MCONTEXT_FREGS_R2 _UC_MCONTEXT_FPR(2) -+#define UC_MCONTEXT_FREGS_R3 _UC_MCONTEXT_FPR(3) -+#define UC_MCONTEXT_FREGS_R4 _UC_MCONTEXT_FPR(4) -+#define UC_MCONTEXT_FREGS_R5 _UC_MCONTEXT_FPR(5) -+#define UC_MCONTEXT_FREGS_R6 _UC_MCONTEXT_FPR(6) -+#define UC_MCONTEXT_FREGS_R7 _UC_MCONTEXT_FPR(7) -+#define UC_MCONTEXT_FREGS_R8 _UC_MCONTEXT_FPR(8) -+#define UC_MCONTEXT_FREGS_R9 _UC_MCONTEXT_FPR(9) -+#define UC_MCONTEXT_FREGS_R10 _UC_MCONTEXT_FPR(10) -+#define UC_MCONTEXT_FREGS_R11 _UC_MCONTEXT_FPR(11) -+#define UC_MCONTEXT_FREGS_R12 _UC_MCONTEXT_FPR(12) -+#define UC_MCONTEXT_FREGS_R13 _UC_MCONTEXT_FPR(13) -+#define UC_MCONTEXT_FREGS_R14 _UC_MCONTEXT_FPR(14) -+#define UC_MCONTEXT_FREGS_R15 _UC_MCONTEXT_FPR(15) -+#define UC_MCONTEXT_FREGS_R16 _UC_MCONTEXT_FPR(16) -+#define UC_MCONTEXT_FREGS_R17 _UC_MCONTEXT_FPR(17) -+#define UC_MCONTEXT_FREGS_R18 _UC_MCONTEXT_FPR(18) -+#define UC_MCONTEXT_FREGS_R19 _UC_MCONTEXT_FPR(19) -+#define UC_MCONTEXT_FREGS_R20 _UC_MCONTEXT_FPR(20) -+#define UC_MCONTEXT_FREGS_R21 _UC_MCONTEXT_FPR(21) -+#define UC_MCONTEXT_FREGS_R22 _UC_MCONTEXT_FPR(22) -+#define UC_MCONTEXT_FREGS_R23 _UC_MCONTEXT_FPR(23) -+#define UC_MCONTEXT_FREGS_R24 _UC_MCONTEXT_FPR(24) -+#define UC_MCONTEXT_FREGS_R25 _UC_MCONTEXT_FPR(25) -+#define UC_MCONTEXT_FREGS_R26 _UC_MCONTEXT_FPR(26) -+#define UC_MCONTEXT_FREGS_R27 _UC_MCONTEXT_FPR(27) -+#define UC_MCONTEXT_FREGS_R28 _UC_MCONTEXT_FPR(28) -+#define UC_MCONTEXT_FREGS_R29 _UC_MCONTEXT_FPR(29) -+#define UC_MCONTEXT_FREGS_R30 _UC_MCONTEXT_FPR(30) -+#define UC_MCONTEXT_FREGS_R31 _UC_MCONTEXT_FPR(31) -+#define UC_MCONTEXT_FREGS_FPSCR _UC_MCONTEXT_FPR(32) -+ -+ -+#define UC_MCONTEXT_VREGS_R0 _UC_MCONTEXT_VR(0) -+#define UC_MCONTEXT_VREGS_R1 _UC_MCONTEXT_VR(1) -+#define UC_MCONTEXT_VREGS_R2 _UC_MCONTEXT_VR(2) -+#define UC_MCONTEXT_VREGS_R3 _UC_MCONTEXT_VR(3) -+#define UC_MCONTEXT_VREGS_R4 _UC_MCONTEXT_VR(4) -+#define UC_MCONTEXT_VREGS_R5 _UC_MCONTEXT_VR(5) -+#define UC_MCONTEXT_VREGS_R6 _UC_MCONTEXT_VR(6) -+#define UC_MCONTEXT_VREGS_R7 _UC_MCONTEXT_VR(7) -+#define UC_MCONTEXT_VREGS_R8 _UC_MCONTEXT_VR(8) -+#define UC_MCONTEXT_VREGS_R9 _UC_MCONTEXT_VR(9) -+#define UC_MCONTEXT_VREGS_R10 _UC_MCONTEXT_VR(10) -+#define UC_MCONTEXT_VREGS_R11 _UC_MCONTEXT_VR(11) -+#define UC_MCONTEXT_VREGS_R12 _UC_MCONTEXT_VR(12) -+#define UC_MCONTEXT_VREGS_R13 _UC_MCONTEXT_VR(13) -+#define UC_MCONTEXT_VREGS_R14 _UC_MCONTEXT_VR(14) -+#define UC_MCONTEXT_VREGS_R15 _UC_MCONTEXT_VR(15) -+#define UC_MCONTEXT_VREGS_R16 _UC_MCONTEXT_VR(16) -+#define UC_MCONTEXT_VREGS_R17 _UC_MCONTEXT_VR(17) -+#define UC_MCONTEXT_VREGS_R18 _UC_MCONTEXT_VR(18) -+#define UC_MCONTEXT_VREGS_R19 _UC_MCONTEXT_VR(19) -+#define UC_MCONTEXT_VREGS_R20 _UC_MCONTEXT_VR(20) -+#define UC_MCONTEXT_VREGS_R21 _UC_MCONTEXT_VR(21) -+#define UC_MCONTEXT_VREGS_R22 _UC_MCONTEXT_VR(22) -+#define UC_MCONTEXT_VREGS_R23 _UC_MCONTEXT_VR(23) -+#define UC_MCONTEXT_VREGS_R24 _UC_MCONTEXT_VR(24) -+#define UC_MCONTEXT_VREGS_R25 _UC_MCONTEXT_VR(25) -+#define UC_MCONTEXT_VREGS_R26 _UC_MCONTEXT_VR(26) -+#define UC_MCONTEXT_VREGS_R27 _UC_MCONTEXT_VR(27) -+#define UC_MCONTEXT_VREGS_R28 _UC_MCONTEXT_VR(28) -+#define UC_MCONTEXT_VREGS_R29 _UC_MCONTEXT_VR(29) -+#define UC_MCONTEXT_VREGS_R30 _UC_MCONTEXT_VR(30) -+#define UC_MCONTEXT_VREGS_R31 _UC_MCONTEXT_VR(31) -+#if defined(__linux__) - #define UC_MCONTEXT_VREGS_VSCR ((void *)&dmy_vrregset.vscr - (void *)&dmy_vrregset) - #define UC_MCONTEXT_VREGS_VRSAVE ((void *)&dmy_vrregset.vrsave - (void *)&dmy_vrregset) -+#elif defined(__FreeBSD__) -+#define UC_MCONTEXT_VREGS_VSCR ((void *)&dmy_ctxt.mc_av[0] - (void *)&dmy_ctxt) -+#define UC_MCONTEXT_VREGS_VRSAVE ((void *)&dmy_ctxt.mc_av[1] - (void *)&dmy_ctxt) -+#else -+#error "Not implemented!" -+#endif - - #endif ---- src/ptrace/_UPT_access_fpreg.c.orig 2018-12-20 18:10:32 UTC -+++ src/ptrace/_UPT_access_fpreg.c -@@ -87,6 +87,9 @@ _UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t r - #elif defined(__aarch64__) - if ((unsigned) reg < UNW_AARCH64_V0 || (unsigned) reg > UNW_AARCH64_V31) - return -UNW_EBADREG; -+#elif defined(__powerpc64__) -+ if ((unsigned) reg < UNW_PPC64_F0 || (unsigned) reg > UNW_PPC64_F31) -+ return -UNW_EBADREG; - #else - #error Fix me - #endif -@@ -104,6 +107,8 @@ _UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t r - memcpy(&fpreg.fpr[reg], val, sizeof(unw_fpreg_t)); - #elif defined(__aarch64__) - memcpy(&fpreg.fp_q[reg], val, sizeof(unw_fpreg_t)); -+#elif defined(__powerpc64__) -+ memcpy(&fpreg.fpreg[reg], val, sizeof(unw_fpreg_t)); - #else - #error Fix me - #endif -@@ -118,6 +123,8 @@ _UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t r - memcpy(val, &fpreg.fpr[reg], sizeof(unw_fpreg_t)); - #elif defined(__aarch64__) - memcpy(val, &fpreg.fp_q[reg], sizeof(unw_fpreg_t)); -+#elif defined(__powerpc64__) -+ memcpy(val, &fpreg.fpreg[reg], sizeof(unw_fpreg_t)); - #else - #error Fix me - #endif ---- src/ptrace/_UPT_reg_offset.c.orig 2018-12-20 18:10:32 UTC -+++ src/ptrace/_UPT_reg_offset.c -@@ -32,6 +32,49 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - # include <asm/ptrace_offsets.h> - #endif - -+#if defined(__powerpc64__) && defined(__FreeBSD__) -+#define PT_R0 0 -+#define PT_R1 1 -+#define PT_R2 2 -+#define PT_R3 3 -+#define PT_R4 4 -+#define PT_R5 5 -+#define PT_R6 6 -+#define PT_R7 7 -+#define PT_R8 8 -+#define PT_R9 9 -+#define PT_R10 10 -+#define PT_R11 11 -+#define PT_R12 12 -+#define PT_R13 13 -+#define PT_R14 14 -+#define PT_R15 15 -+#define PT_R16 16 -+#define PT_R17 17 -+#define PT_R18 18 -+#define PT_R19 19 -+#define PT_R20 20 -+#define PT_R21 21 -+#define PT_R22 22 -+#define PT_R23 23 -+#define PT_R24 24 -+#define PT_R25 25 -+#define PT_R26 26 -+#define PT_R27 27 -+#define PT_R28 28 -+#define PT_R29 29 -+#define PT_R30 30 -+#define PT_R31 31 -+#define PT_NIP 32 -+#define PT_CTR 35 -+#define PT_LNK 36 -+#define PT_XER 37 -+#define PT_FPR0 48 -+#define PT_VR0 82 -+#define PT_VSCR (PT_VR0 + 32*2 + 1) -+#define PT_VRSAVE (PT_VR0 + 33*2) -+#endif -+ - const int _UPT_reg_offset[UNW_REG_LAST + 1] = - { - #ifdef HAVE_ASM_PTRACE_OFFSETS_H