From nobody Wed Nov 1 05:30:36 2023 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SKwZj21sxz4ylcb; Wed, 1 Nov 2023 05:30:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SKwZj1NWbz4c9Z; Wed, 1 Nov 2023 05:30:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698816637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2MubNqat9npkK+4JfD7w4iE1Zp68st1Ar4dt23x4aS4=; b=JIfncu77PczU8B8quUvv5uqvlkX808pBli5g/UVChkHOE5x2N9PafQgkBlIONwhirQxdws K3JRj7SMMMDFRcs2u90z6+UCur4FHf/2yu/BpFcn424WOcD+bjPns4BtsOF7+/H0rf2ypO cpWq8rplIH/GmiGb/oFqvleaMLFZbPQLl9sKTfCyk9Kf2+7cFrz87eVK6EADeskHxHw5BP n0gWknBWnMFCBKBkr7BX4MyhPRzCm9qwUYejGHGrylqRxvbW6vGSKTjkx4XCDMjmahHApE IwEQ7fEtyru/+NQexOMrVnBARfrQWtZLG4SEGcRndOqNm10NEWncQMqavz+UJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1698816637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2MubNqat9npkK+4JfD7w4iE1Zp68st1Ar4dt23x4aS4=; b=QI9bP83aO+o3wKM2Md7Ek7Usy1wQy/s4tk8/Y9AmtIZ6azzrMEO+T5BYOwb4hsm3wvyBRa AOupxXcPrb3D6oQ9QTzu8e9LIc41j0ew2AeWNw9kvnCZkrFNsgX6tX4RmIOUwStdGyowTD IedP9lrvNJGB1I45uaSPHWMd2izrP9Lh8d0pVPRmyO9lGaiKEE578qUxHHXchSka0PV+bs FJg62bVET8pnKqpNLXGYeGo2BmNVCEJrr5W7tKC3trFOHL9vW10M1TQPo7/vhoegVrJvmM RpbsIsSUzp/Zk5B8b/8j/4Ypv360UNAX2gF1G7xFCzcqVjES4gsjOSlWRufL4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1698816637; a=rsa-sha256; cv=none; b=Yv0XO3k62K5bmAZkSYCWY3rbJtecHj1JoO450K2G7YXV87yS39wg8flzZFPax4kkpPcmto TxHiy9es1uJflRJb/omABfJdnhQh8kyCyEgdCcTI661crhR0mXSAl3cf+TnWSBf7dE0FSu W4bthGNTMiuzgTuHUZ0ULGNbCuBfXQhnR+HWOojDgNziHjTMRJ8I5CvJQ9KmKqrdDKPY6K we6y87ipg/TMJcXvjszf9HbPq80mu9XsFPGD64DdKpTHF4fTIQbF8oOQQc2c627kShTHCx HenUn9ehAi2+waoLGz5F+tiie9W3H2S1GxKAL+i1qFVxQ3cHj6zExbDNXje72g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SKwZj0Q6lzYhH; Wed, 1 Nov 2023 05:30:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3A15Ub3N004197; Wed, 1 Nov 2023 05:30:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3A15Uab4004194; Wed, 1 Nov 2023 05:30:36 GMT (envelope-from git) Date: Wed, 1 Nov 2023 05:30:36 GMT Message-Id: <202311010530.3A15Uab4004194@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Po-Chuan Hsieh Subject: git: ee491a6c691b - main - devel/libunwind: Update to 1.7.2 List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sunpoet X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ee491a6c691b15e6a3313fe8d73cfb2b2ed06e83 Auto-Submitted: auto-generated The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=ee491a6c691b15e6a3313fe8d73cfb2b2ed06e83 commit ee491a6c691b15e6a3313fe8d73cfb2b2ed06e83 Author: Po-Chuan Hsieh AuthorDate: 2023-11-01 05:30:07 +0000 Commit: Po-Chuan Hsieh CommitDate: 2023-11-01 05:30:07 +0000 devel/libunwind: Update to 1.7.2 - Change MASTER_SITES - Update WWW - Sort PLIST Changes: https://github.com/libunwind/libunwind/releases PR: 274523 Exp-run by: antoine --- devel/libunwind/Makefile | 16 +- devel/libunwind/distinfo | 8 +- devel/libunwind/files/patch-aarch64 | 64 ------- devel/libunwind/files/patch-bug-269875 | 310 --------------------------------- devel/libunwind/files/patch-i386 | 13 ++ devel/libunwind/pkg-plist | 12 +- 6 files changed, 30 insertions(+), 393 deletions(-) diff --git a/devel/libunwind/Makefile b/devel/libunwind/Makefile index 77af7ab31c2e..72927e2d1d9f 100644 --- a/devel/libunwind/Makefile +++ b/devel/libunwind/Makefile @@ -1,17 +1,13 @@ PORTNAME= libunwind -PORTVERSION= 20211201 # This is the release date on https://download.savannah.gnu.org/releases/libunwind/ -PORTREVISION= 2 +PORTVERSION= 20230730 # This is the release date on https://github.com/libunwind/libunwind/releases CATEGORIES= devel -MASTER_SITES= SAVANNAH \ - https://github.com/libunwind/libunwind/releases/download/v${PORTVERSION}/ -DISTNAME= ${PORTNAME}-1.6.2 - -PATCH_SITES= https://github.com/libunwind/libunwind/commit/ -PATCHFILES= ce7e1002888a03fde0eea631748489b12ff56490.patch:-p1 +MASTER_SITES= https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/ +DISTNAME= ${PORTNAME}-${LIBUNWIND_VERSION} MAINTAINER= sunpoet@FreeBSD.org COMMENT= Generic stack unwinding library -WWW= https://www.nongnu.org/libunwind/ +WWW= https://github.com/libunwind/libunwind \ + https://www.nongnu.org/libunwind/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/COPYING @@ -31,6 +27,8 @@ PLIST_SUB= ARCH=${ARCH:S|amd64|x86_64|:C|armv.|arm|:S|i386|x86|:C|powerpc64.*|pp CPE_VENDOR= libunwind_project +LIBUNWIND_VERSION= 1.7.2 + .include .if ${ARCH:Mpowerpc*} diff --git a/devel/libunwind/distinfo b/devel/libunwind/distinfo index 5d98b5400168..03fe9071a429 100644 --- a/devel/libunwind/distinfo +++ b/devel/libunwind/distinfo @@ -1,5 +1,3 @@ -TIMESTAMP = 1682376479 -SHA256 (libunwind-1.6.2.tar.gz) = 4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976 -SIZE (libunwind-1.6.2.tar.gz) = 901392 -SHA256 (ce7e1002888a03fde0eea631748489b12ff56490.patch) = 1bc9c6c2c3a73893fdd54e67c154633a1c6f756b1f71bc99353edc417cb24ee0 -SIZE (ce7e1002888a03fde0eea631748489b12ff56490.patch) = 18260 +TIMESTAMP = 1697307744 +SHA256 (libunwind-1.7.2.tar.gz) = a18a6a24307443a8ace7a8acc2ce79fbbe6826cd0edf98d6326d0225d6a5d6e6 +SIZE (libunwind-1.7.2.tar.gz) = 912590 diff --git a/devel/libunwind/files/patch-aarch64 b/devel/libunwind/files/patch-aarch64 deleted file mode 100644 index 5df59a1815ae..000000000000 --- a/devel/libunwind/files/patch-aarch64 +++ /dev/null @@ -1,64 +0,0 @@ -Reference: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262447 - https://github.com/libunwind/libunwind/pull/344 - ---- include/libunwind-aarch64.h.orig 2021-12-01 00:46:39 UTC -+++ include/libunwind-aarch64.h -@@ -226,15 +226,24 @@ typedef struct - #else - /* On AArch64, we can directly use ucontext_t as the unwind context. */ - typedef ucontext_t unw_tdep_context_t; -+#if defined(__FreeBSD__) -+typedef ucontext_t unw_fpsimd_context_t; - #endif -+#endif - - - #include "libunwind-common.h" - #include "libunwind-dynamic.h" - -+#if defined(__FreeBSD__) -+#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.mc_gpregs.gp_x[0]; -+#else -+#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.regs; -+#endif -+ - #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; \ -+ UNW_BASE \ - __asm__ __volatile__ ( \ - "stp x0, x1, [%[base], #0]\n" \ - "stp x2, x3, [%[base], #16]\n" \ ---- src/aarch64/Ginit.c.orig 2021-11-30 17:12:31 UTC -+++ src/aarch64/Ginit.c -@@ -47,9 +47,17 @@ static inline void * - uc_addr (unw_tdep_context_t *uc, int reg) - { - if (reg >= UNW_AARCH64_X0 && reg < UNW_AARCH64_V0) -+#if defined(__FreeBSD__) -+ return &uc->uc_mcontext.mc_gpregs.gp_x[reg]; -+#else - return &uc->uc_mcontext.regs[reg]; -+#endif - else if (reg >= UNW_AARCH64_V0 && reg <= UNW_AARCH64_V31) -+#if defined(__FreeBSD__) -+ return &GET_FPCTX(uc)->uc_mcontext.mc_fpregs.fp_q[reg - UNW_AARCH64_V0]; -+#else - return &GET_FPCTX(uc)->vregs[reg - UNW_AARCH64_V0]; -+#endif - else - return NULL; - } ---- src/aarch64/unwind_i.h.orig 2020-04-28 15:49:14 UTC -+++ src/aarch64/unwind_i.h -@@ -59,6 +59,10 @@ extern int aarch64_local_resume (unw_addr_space_t as, - } while (0) - #endif - -+#if defined(__FreeBSD__) -+#define GET_FPCTX(uc) ((unw_tdep_context_t *)(&uc->uc_mcontext.mc_spare)) -+#else - #define GET_FPCTX(uc) ((unw_fpsimd_context_t *)(&uc->uc_mcontext.__reserved)) -+#endif - - #endif /* unwind_i_h */ diff --git a/devel/libunwind/files/patch-bug-269875 b/devel/libunwind/files/patch-bug-269875 deleted file mode 100644 index 6655731e6c4b..000000000000 --- a/devel/libunwind/files/patch-bug-269875 +++ /dev/null @@ -1,310 +0,0 @@ -Obtained from: https://github.com/libunwind/libunwind/commit/400b3f819ad44ff4e15487b163cc3613389cb4c8 - ---- include/dwarf.h.orig 2021-12-01 00:46:39 UTC -+++ include/dwarf.h -@@ -231,6 +231,7 @@ typedef enum - DWARF_WHERE_REG, /* register saved in another register */ - DWARF_WHERE_EXPR, /* register saved */ - DWARF_WHERE_VAL_EXPR, /* register has computed value */ -+ DWARF_WHERE_CFA, /* register is set to the computed cfa value */ - } - dwarf_where_t; - -@@ -313,7 +314,7 @@ typedef struct dwarf_cursor - void *as_arg; /* argument to address-space callbacks */ - unw_addr_space_t as; /* reference to per-address-space info */ - -- unw_word_t cfa; /* canonical frame address; aka frame-/stack-pointer */ -+ unw_word_t cfa; /* canonical frame address; aka frame-pointer */ - unw_word_t ip; /* instruction pointer */ - unw_word_t args_size; /* size of arguments */ - unw_word_t eh_args[UNW_TDEP_NUM_EH_REGS]; ---- include/libunwind_i.h.orig 2021-12-01 00:46:39 UTC -+++ include/libunwind_i.h -@@ -346,6 +346,10 @@ static inline void invalidate_edi (struct elf_dyn_info - - #include "tdep/libunwind_i.h" - -+#ifndef TDEP_DWARF_SP -+#define TDEP_DWARF_SP UNW_TDEP_SP -+#endif -+ - #ifndef tdep_get_func_addr - # define tdep_get_func_addr(as,addr,v) (*(v) = addr, 0) - #endif ---- include/tdep-x86/dwarf-config.h.orig 2021-12-01 00:46:39 UTC -+++ include/tdep-x86/dwarf-config.h -@@ -43,9 +43,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - typedef struct dwarf_loc - { - unw_word_t val; --#ifndef UNW_LOCAL_ONLY - unw_word_t type; /* see X86_LOC_TYPE_* macros. */ --#endif - } - dwarf_loc_t; - ---- include/tdep-x86/libunwind_i.h.orig 2021-12-01 00:46:39 UTC -+++ include/tdep-x86/libunwind_i.h -@@ -84,15 +84,26 @@ dwarf_get_uc(const struct dwarf_cursor *cursor) - } - - #define DWARF_GET_LOC(l) ((l).val) -+# define DWARF_LOC_TYPE_MEM (0 << 0) -+# define DWARF_LOC_TYPE_FP (1 << 0) -+# define DWARF_LOC_TYPE_REG (1 << 1) -+# define DWARF_LOC_TYPE_VAL (1 << 2) - --#ifdef UNW_LOCAL_ONLY -+# 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_IS_MEM_LOC(l) ((l).type == DWARF_LOC_TYPE_MEM) -+# define DWARF_IS_VAL_LOC(l) (((l).type & DWARF_LOC_TYPE_VAL) != 0) -+ -+# define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r), .type = (t) }) - # 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_IS_NULL_LOC(l) \ -+ ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; }) -+# define DWARF_VAL_LOC(c,v) DWARF_LOC ((v), DWARF_LOC_TYPE_VAL) -+# define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), DWARF_LOC_TYPE_MEM) -+ -+#ifdef UNW_LOCAL_ONLY - # define DWARF_REG_LOC(c,r) (DWARF_LOC((unw_word_t) \ - tdep_uc_addr(dwarf_get_uc(c), (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(dwarf_get_uc(c), (r)), 0)) - -@@ -114,35 +125,8 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, - 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; -- 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_GET_LOC (loc)) -- return -1; -- return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val, -- 1, c->as_arg); --} -- - #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)) - -@@ -192,38 +176,33 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, - 1, c->as_arg); - } - -+#endif /* !UNW_LOCAL_ONLY */ -+ - 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 -+ if (DWARF_IS_MEM_LOC (loc)) - return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val, - 0, c->as_arg); -+ assert(DWARF_IS_VAL_LOC (loc)); -+ *val = DWARF_GET_LOC (loc); -+ return 0; - } - - static inline int - dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) - { -+ assert(!DWARF_IS_VAL_LOC (loc)); -+ - 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); -@@ -232,7 +211,9 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, un - 1, c->as_arg); - } - --#endif /* !UNW_LOCAL_ONLY */ -+// For historical reasons, the DWARF numbering does not match the libunwind -+// numbering, necessitating this override -+#define TDEP_DWARF_SP 4 - - #define tdep_getcontext_trace unw_getcontext - #define tdep_init_done UNW_OBJ(init_done) ---- src/dwarf/Gparser.c.orig 2021-12-01 00:46:39 UTC -+++ src/dwarf/Gparser.c -@@ -508,6 +508,9 @@ setup_fde (struct dwarf_cursor *c, dwarf_state_record_ - for (i = 0; i < DWARF_NUM_PRESERVED_REGS + 2; ++i) - set_reg (sr, i, DWARF_WHERE_SAME, 0); - -+ // SP defaults to CFA (but is overridable) -+ set_reg (sr, TDEP_DWARF_SP, DWARF_WHERE_CFA, 0); -+ - struct dwarf_cie_info *dci = c->pi.unwind_info; - sr->rs_current.ret_addr_column = dci->ret_addr_column; - unw_word_t addr = dci->cie_instr_start; -@@ -792,14 +795,14 @@ apply_reg_state (struct dwarf_cursor *c, struct dwarf_ - /* As a special-case, if the stack-pointer is the CFA and the - stack-pointer wasn't saved, popping the CFA implicitly pops - the stack-pointer as well. */ -- if ((rs->reg.val[DWARF_CFA_REG_COLUMN] == UNW_TDEP_SP) -- && (UNW_TDEP_SP < ARRAY_SIZE(rs->reg.val)) -- && (rs->reg.where[UNW_TDEP_SP] == DWARF_WHERE_SAME)) -+ if ((rs->reg.val[DWARF_CFA_REG_COLUMN] == TDEP_DWARF_SP) -+ && (TDEP_DWARF_SP < ARRAY_SIZE(rs->reg.val)) -+ && (DWARF_IS_NULL_LOC(c->loc[TDEP_DWARF_SP]))) - cfa = c->cfa; - else - { - regnum = dwarf_to_unw_regnum (rs->reg.val[DWARF_CFA_REG_COLUMN]); -- if ((ret = unw_get_reg ((unw_cursor_t *) c, regnum, &cfa)) < 0) -+ if ((ret = unw_get_reg (dwarf_to_cursor(c), regnum, &cfa)) < 0) - return ret; - } - cfa += rs->reg.val[DWARF_CFA_OFF_COLUMN]; -@@ -834,6 +837,10 @@ apply_reg_state (struct dwarf_cursor *c, struct dwarf_ - break; - - case DWARF_WHERE_SAME: -+ break; -+ -+ case DWARF_WHERE_CFA: -+ new_loc[i] = DWARF_VAL_LOC (c, cfa); - break; - - case DWARF_WHERE_CFAREL: ---- src/x86/Gos-freebsd.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86/Gos-freebsd.c -@@ -138,6 +138,7 @@ x86_handle_signal_frame (unw_cursor_t *cursor) - c->dwarf.loc[ST0] = DWARF_NULL_LOC; - } else if (c->sigcontext_format == X86_SCF_FREEBSD_SYSCALL) { - c->dwarf.loc[EIP] = DWARF_LOC (c->dwarf.cfa, 0); -+ c->dwarf.loc[ESP] = DWARF_VAL_LOC (c, c->dwarf.cfa + 4); - c->dwarf.loc[EAX] = DWARF_NULL_LOC; - c->dwarf.cfa += 4; - c->dwarf.use_prev_instr = 1; ---- src/x86/Gregs.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86/Gregs.c -@@ -53,7 +53,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, u - break; - - case UNW_X86_CFA: -- case UNW_X86_ESP: - if (write) - return -UNW_EREADONLYREG; - *valp = c->dwarf.cfa; -@@ -81,6 +80,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, u - case UNW_X86_ECX: loc = c->dwarf.loc[ECX]; break; - case UNW_X86_EBX: loc = c->dwarf.loc[EBX]; break; - -+ case UNW_X86_ESP: loc = c->dwarf.loc[ESP]; break; - case UNW_X86_EBP: loc = c->dwarf.loc[EBP]; break; - case UNW_X86_ESI: loc = c->dwarf.loc[ESI]; break; - case UNW_X86_EDI: loc = c->dwarf.loc[EDI]; break; ---- src/x86/Gstep.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86/Gstep.c -@@ -47,7 +47,7 @@ unw_step (unw_cursor_t *cursor) - { - /* DWARF failed, let's see if we can follow the frame-chain - or skip over the signal trampoline. */ -- struct dwarf_loc ebp_loc, eip_loc; -+ struct dwarf_loc ebp_loc, eip_loc, esp_loc; - - /* We could get here because of missing/bad unwind information. - Validate all addresses before dereferencing. */ -@@ -77,6 +77,7 @@ unw_step (unw_cursor_t *cursor) - c->dwarf.cfa); - - ebp_loc = DWARF_LOC (c->dwarf.cfa, 0); -+ esp_loc = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); - eip_loc = DWARF_LOC (c->dwarf.cfa + 4, 0); - c->dwarf.cfa += 8; - -@@ -87,6 +88,7 @@ unw_step (unw_cursor_t *cursor) - c->dwarf.loc[i] = DWARF_NULL_LOC; - - c->dwarf.loc[EBP] = ebp_loc; -+ c->dwarf.loc[ESP] = esp_loc; - c->dwarf.loc[EIP] = eip_loc; - c->dwarf.use_prev_instr = 1; - } ---- src/x86_64/Gos-freebsd.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86_64/Gos-freebsd.c -@@ -133,6 +133,7 @@ x86_64_handle_signal_frame (unw_cursor_t *cursor) - c->dwarf.loc[RCX] = c->dwarf.loc[R10]; - /* rsp_loc = DWARF_LOC(c->dwarf.cfa - 8, 0); */ - /* rbp_loc = c->dwarf.loc[RBP]; */ -+ c->dwarf.loc[RSP] = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); - c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); - ret = dwarf_get (&c->dwarf, c->dwarf.loc[RIP], &c->dwarf.ip); - Debug (1, "Frame Chain [RIP=0x%Lx] = 0x%Lx\n", ---- src/x86_64/Gregs.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86_64/Gregs.c -@@ -79,7 +79,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, u - break; - - case UNW_X86_64_CFA: -- case UNW_X86_64_RSP: - if (write) - return -UNW_EREADONLYREG; - *valp = c->dwarf.cfa; -@@ -107,6 +106,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, u - case UNW_X86_64_RCX: loc = c->dwarf.loc[RCX]; break; - case UNW_X86_64_RBX: loc = c->dwarf.loc[RBX]; break; - -+ case UNW_X86_64_RSP: loc = c->dwarf.loc[RSP]; break; - case UNW_X86_64_RBP: loc = c->dwarf.loc[RBP]; break; - case UNW_X86_64_RSI: loc = c->dwarf.loc[RSI]; break; - case UNW_X86_64_RDI: loc = c->dwarf.loc[RDI]; break; ---- src/x86_64/Gstep.c.orig 2021-12-01 00:46:39 UTC -+++ src/x86_64/Gstep.c -@@ -223,7 +223,7 @@ unw_step (unw_cursor_t *cursor) - Debug (2, "RIP fixup didn't work, falling back\n"); - unw_word_t rbp1 = 0; - rbp_loc = DWARF_LOC(rbp, 0); -- rsp_loc = DWARF_NULL_LOC; -+ rsp_loc = DWARF_VAL_LOC(c, rbp + 16); - rip_loc = DWARF_LOC (rbp + 8, 0); - ret = dwarf_get (&c->dwarf, rbp_loc, &rbp1); - Debug (1, "[RBP=0x%lx] = 0x%lx (cfa = 0x%lx) -> 0x%lx\n", diff --git a/devel/libunwind/files/patch-i386 b/devel/libunwind/files/patch-i386 new file mode 100644 index 000000000000..86f24c8417ab --- /dev/null +++ b/devel/libunwind/files/patch-i386 @@ -0,0 +1,13 @@ +Reference: https://github.com/libunwind/libunwind/pull/645 + https://github.com/libunwind/libunwind/commit/24dc3b0880695137a48c2ad0244900f9bb8416eb + +--- src/x86/Gos-freebsd.c.orig 2023-07-30 11:32:29 UTC ++++ src/x86/Gos-freebsd.c +@@ -111,6 +111,7 @@ x86_handle_signal_frame (unw_cursor_t *cursor) + struct sigframe *sf; + uintptr_t uc_addr; + struct dwarf_loc esp_loc; ++ int i; + + sf = (struct sigframe *)c->dwarf.cfa; + uc_addr = (uintptr_t)&(sf->sf_uc); diff --git a/devel/libunwind/pkg-plist b/devel/libunwind/pkg-plist index 73e648228c4a..f2e8304ce292 100644 --- a/devel/libunwind/pkg-plist +++ b/devel/libunwind/pkg-plist @@ -1,9 +1,13 @@ +include/libunwind-%%ARCH%%.h include/libunwind-common.h %%COREDUMP%%include/libunwind-coredump.h include/libunwind-dynamic.h include/libunwind-ptrace.h -include/libunwind-%%ARCH%%.h include/libunwind.h +lib/libunwind-%%ARCH%%.a +lib/libunwind-%%ARCH%%.so +lib/libunwind-%%ARCH%%.so.8 +lib/libunwind-%%ARCH%%.so.8.0.1 %%COREDUMP%%lib/libunwind-coredump.a %%COREDUMP%%lib/libunwind-coredump.so %%COREDUMP%%lib/libunwind-coredump.so.0 @@ -18,10 +22,6 @@ lib/libunwind-setjmp.a lib/libunwind-setjmp.so lib/libunwind-setjmp.so.0 lib/libunwind-setjmp.so.0.0.0 -lib/libunwind-%%ARCH%%.a -lib/libunwind-%%ARCH%%.so -lib/libunwind-%%ARCH%%.so.8 -lib/libunwind-%%ARCH%%.so.8.0.1 lib/libunwind.a lib/libunwind.so lib/libunwind.so.8 @@ -47,7 +47,9 @@ man/man3/unw_get_accessors.3.gz man/man3/unw_get_fpreg.3.gz man/man3/unw_get_proc_info.3.gz man/man3/unw_get_proc_info_by_ip.3.gz +man/man3/unw_get_proc_info_in_range.3.gz man/man3/unw_get_proc_name.3.gz +man/man3/unw_get_proc_name_by_ip.3.gz man/man3/unw_get_reg.3.gz man/man3/unw_getcontext.3.gz man/man3/unw_init_local.3.gz