From: Gustavo Romero Date: Mon, 27 Mar 2017 22:24:16 +0000 Subject: [PATCH] Fix compilation on PPC when libc musl is used instead of glibc Musl on Power does not define regs member as a pt_regs pointer type, hence it's necessary to use member gp_regs instead. --- a/deps/v8/src/profiler/sampler.cc +++ b/deps/v8/src/profiler/sampler.cc @@ -487,9 +487,17 @@ state.sp = reinterpret_cast
(mcontext.gregs[29]); state.fp = reinterpret_cast
(mcontext.gregs[30]); #elif V8_HOST_ARCH_PPC +#if V8_LIBC_GLIBC state.pc = reinterpret_cast
(ucontext->uc_mcontext.regs->nip); state.sp = reinterpret_cast
(ucontext->uc_mcontext.regs->gpr[PT_R1]); state.fp = reinterpret_cast
(ucontext->uc_mcontext.regs->gpr[PT_R31]); +#else + // Some C libraries, notably Musl, define the regs member as a void pointer, + // hence we use the gp_regs member instead. + state.pc = reinterpret_cast
(ucontext->uc_mcontext.gp_regs[32]); + state.sp = reinterpret_cast
(ucontext->uc_mcontext.gp_regs[1]); + state.fp = reinterpret_cast
(ucontext->uc_mcontext.gp_regs[31]); +#endif #elif V8_HOST_ARCH_S390 #if V8_TARGET_ARCH_32_BIT // 31-bit target will have bit 0 (MSB) of the PSW set to denote addressing