From: Gustavo Romero From: Jakub Jirutka Date: Mon, 28 Mar 2017 01:51:00 +0200 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. Ported to nodejs 7.7.4 (jirutka) --- a/deps/v8/src/libsampler/sampler.cc +++ b/deps/v8/src/libsampler/sampler.cc @@ -450,11 +450,19 @@ 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