git: eefb851bfa83 - main - devel/libunwind: Rename patch file and add comment
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 25 Mar 2022 13:42:41 UTC
The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=eefb851bfa83b0d84ebaacdb11ce4dbeb770f13d commit eefb851bfa83b0d84ebaacdb11ce4dbeb770f13d Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org> AuthorDate: 2022-03-25 12:45:56 +0000 Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org> CommitDate: 2022-03-25 13:36:40 +0000 devel/libunwind: Rename patch file and add comment --- devel/libunwind/files/patch-aarch64 | 64 ++++++++++++++++++++++ .../files/patch-include_libunwind-aarch64.h | 28 ---------- devel/libunwind/files/patch-src_aarch64_Ginit.c | 20 ------- .../libunwind/files/patch-src_aarch64_unwind__i.h | 13 ----- 4 files changed, 64 insertions(+), 61 deletions(-) diff --git a/devel/libunwind/files/patch-aarch64 b/devel/libunwind/files/patch-aarch64 new file mode 100644 index 000000000000..5df59a1815ae --- /dev/null +++ b/devel/libunwind/files/patch-aarch64 @@ -0,0 +1,64 @@ +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-include_libunwind-aarch64.h b/devel/libunwind/files/patch-include_libunwind-aarch64.h deleted file mode 100644 index b15e9f14f249..000000000000 --- a/devel/libunwind/files/patch-include_libunwind-aarch64.h +++ /dev/null @@ -1,28 +0,0 @@ ---- 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" \ diff --git a/devel/libunwind/files/patch-src_aarch64_Ginit.c b/devel/libunwind/files/patch-src_aarch64_Ginit.c deleted file mode 100644 index d4687b361b27..000000000000 --- a/devel/libunwind/files/patch-src_aarch64_Ginit.c +++ /dev/null @@ -1,20 +0,0 @@ ---- 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; - } diff --git a/devel/libunwind/files/patch-src_aarch64_unwind__i.h b/devel/libunwind/files/patch-src_aarch64_unwind__i.h deleted file mode 100644 index aa1e8ccbc838..000000000000 --- a/devel/libunwind/files/patch-src_aarch64_unwind__i.h +++ /dev/null @@ -1,13 +0,0 @@ ---- 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 */