mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-06 22:07:19 +02:00
Update ppc patch due to a refactor in sampler.cc internals introduced in [1] where 'state' variable is now treated as a pointer. [1] https://goo.gl/YwyjCC
33 lines
1.3 KiB
Diff
33 lines
1.3 KiB
Diff
From: Gustavo Romero <gromero@br.ibm.com>
|
|
From: Jakub Jirutka <jakub@jirutka.cz>
|
|
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<void*>(mcontext.gregs[29]);
|
|
state->fp = reinterpret_cast<void*>(mcontext.gregs[30]);
|
|
#elif V8_HOST_ARCH_PPC
|
|
+#if V8_LIBC_GLIBC
|
|
state->pc = reinterpret_cast<void*>(ucontext->uc_mcontext.regs->nip);
|
|
state->sp =
|
|
reinterpret_cast<void*>(ucontext->uc_mcontext.regs->gpr[PT_R1]);
|
|
state->fp =
|
|
reinterpret_cast<void*>(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<void*>(ucontext->uc_mcontext.gp_regs[32]);
|
|
+ state->sp = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[1]);
|
|
+ state->fp = reinterpret_cast<void*>(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
|