nodejs/debian/patches/ppc64.patch

48 lines
2.1 KiB
Diff

Date: Sat, 13 Jun 2020 20:49:35 +0200
Subject: [PATCH] Fix crashes on Linux/PPC64 ELFv1
Origin: https://github.com/nodejs/node/pull/33866
From: Marcus Comstedt <marcus@mc.pp.se>
--- nodejs-12.18.0~dfsg.orig/deps/v8/src/compiler/backend/instruction-selector.cc
+++ nodejs-12.18.0~dfsg/deps/v8/src/compiler/backend/instruction-selector.cc
@@ -2788,7 +2788,7 @@ void InstructionSelector::VisitCall(Node
switch (call_descriptor->kind()) {
case CallDescriptor::kCallAddress: {
int misc_field = static_cast<int>(call_descriptor->ParameterCount());
-#if defined(_AIX)
+#if ABI_USES_FUNCTION_DESCRIPTORS
// Highest misc_field bit is used on AIX to indicate if a CFunction call
// has function descriptor or not.
misc_field |= call_descriptor->HasFunctionDescriptor()
--- nodejs-12.18.0~dfsg.orig/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+++ nodejs-12.18.0~dfsg/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
@@ -1026,7 +1026,7 @@ CodeGenerator::CodeGenResult CodeGenerat
Label start_call;
bool isWasmCapiFunction =
linkage()->GetIncomingDescriptor()->IsWasmCapiFunction();
-#if defined(_AIX)
+#if ABI_USES_FUNCTION_DESCRIPTORS
// AIX/PPC64BE Linux uses a function descriptor
int kNumParametersMask = kHasFunctionDescriptorBitMask - 1;
num_parameters = kNumParametersMask & misc_field;
--- nodejs-12.18.0~dfsg.orig/deps/v8/src/execution/simulator.h
+++ nodejs-12.18.0~dfsg/deps/v8/src/execution/simulator.h
@@ -122,7 +122,7 @@ class GeneratedCode {
DISABLE_CFI_ICALL Return Call(Args... args) {
// When running without a simulator we call the entry directly.
-#if V8_OS_AIX
+#if ABI_USES_FUNCTION_DESCRIPTORS
// AIX ABI requires function descriptors (FD). Artificially create a pseudo
// FD to ensure correct dispatch to generated code. The 'volatile'
// declaration is required to avoid the compiler from not observing the
@@ -134,7 +134,7 @@ class GeneratedCode {
return fn(args...);
#else
return fn_ptr_(args...);
-#endif // V8_OS_AIX
+#endif // ABI_USES_FUNCTION_DESCRIPTORS
}
#endif // USE_SIMULATOR