--- configure.py +++ configure.py @@ -848,7 +848,7 @@ def host_arch_cc(): '__MIPSEL__' : 'mipsel', '__mips__' : 'mips', '__PPC64__' : 'ppc64', - '__PPC__' : 'ppc64', + '__PPC__' : 'ppc', '__x86_64__' : 'x64', '__s390__' : 's390', '__s390x__' : 's390x', --- node.gyp +++ node.gyp @@ -479,6 +479,11 @@ 'msvs_disabled_warnings!': [4244], 'conditions': [ + [ 'host_arch=="mips" or host_arch=="mipsel" or host_arch=="ppc"', { + 'link_settings': { + 'libraries': [ '-latomic' ], + }, + }], [ 'node_code_cache_path!=""', { 'sources': [ '<(node_code_cache_path)' ] }, { --- deps/v8/src/libsampler/sampler.cc +++ deps/v8/src/libsampler/sampler.cc @@ -418,9 +418,15 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) { reinterpret_cast(ucontext->uc_mcontext.regs->gpr[PT_R31]); #else // Some C libraries, notably Musl, define the regs member as a void pointer + #if !V8_TARGET_ARCH_32_BIT 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]); + #else + state->pc = reinterpret_cast(ucontext->uc_mcontext.gregs[32]); + state->sp = reinterpret_cast(ucontext->uc_mcontext.gregs[1]); + state->fp = reinterpret_cast(ucontext->uc_mcontext.gregs[31]); + #endif #endif #elif V8_HOST_ARCH_S390 #if V8_TARGET_ARCH_32_BIT