[Pkg-javascript-devel] Bug#968681: nodejs: regresses in ppc64el ( node-create-hash, node-crypto-browserify, node-sha.js)

Gianfranco Costamagna locutusofborg at debian.org
Wed Aug 19 20:09:33 BST 2020


Source: nodejs
Version: 12.18.2~dfsg-1
Severity: serious

Hello, looks like node-create-hask, node-crypto-browserify, node-sha.js have autopkgtests failures on ppc64el.

there might be an upstream patch according to Ubuntu bug [1]  and v8 commits

https://ci.debian.net/data/autopkgtest/unstable/ppc64el/n/node-crypto-browserify/6740061/log.gz

https://ci.debian.net/data/autopkgtest/unstable/ppc64el/n/node-sha.js/6740057/log.gz

https://ci.debian.net/data/autopkgtest/unstable/ppc64el/n/node-create-hash/6738537/log.gz


the attached diff (based on upstream changes) might help in fixing the failures.

[1] https://bugs.launchpad.net/ubuntu/+source/node-create-hash/+bug/1887144

I just uploaded in Ubuntu, will see in 24h or so if the problem is fixed or not.

G.
-------------- next part --------------
diff -Nru nodejs-12.18.2~dfsg/debian/changelog nodejs-12.18.2~dfsg/debian/changelog
--- nodejs-12.18.2~dfsg/debian/changelog	2020-07-28 15:12:12.000000000 +0200
+++ nodejs-12.18.2~dfsg/debian/changelog	2020-08-19 20:47:23.000000000 +0200
@@ -1,3 +1,12 @@
+nodejs (12.18.2~dfsg-1ubuntu2) groovy; urgency=medium
+
+  * debian/patches/3f071e3.patch:
+  * debian/patches/1a9c676a141b32483b48884f8cc0330e64c8e17f.patch:
+    - cherry-pick two upstream changes in v8 to fix a testsuite failure on
+      ppc64el for some sha1 calculation errors (LP: #1887144)
+
+ -- Gianfranco Costamagna <locutusofborg at debian.org>  Wed, 19 Aug 2020 20:47:23 +0200
+
 nodejs (12.18.2~dfsg-1ubuntu1) groovy; urgency=medium
 
   * Merge from Debian (LP: #1882185). Remaining changes:
diff -Nru nodejs-12.18.2~dfsg/debian/patches/1a9c676a141b32483b48884f8cc0330e64c8e17f.patch nodejs-12.18.2~dfsg/debian/patches/1a9c676a141b32483b48884f8cc0330e64c8e17f.patch
--- nodejs-12.18.2~dfsg/debian/patches/1a9c676a141b32483b48884f8cc0330e64c8e17f.patch	1970-01-01 01:00:00.000000000 +0100
+++ nodejs-12.18.2~dfsg/debian/patches/1a9c676a141b32483b48884f8cc0330e64c8e17f.patch	2020-08-19 20:47:23.000000000 +0200
@@ -0,0 +1,44 @@
+From 1a9c676a141b32483b48884f8cc0330e64c8e17f Mon Sep 17 00:00:00 2001
+From: Milad Farazmand <miladfar at ca.ibm.com>
+Date: Mon, 10 Aug 2020 20:19:25 +0000
+Subject: [PATCH] PPC: clear high 32 bits from the result of mulhw.
+
+The hight 32 bits of the result of mulhw are undefined and need
+to be cleared manually.
+
+Change-Id: I0e746898aa26a7970ab59b89c374afd1377028ea
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2347208
+Reviewed-by: Junliang Yan <jyan at ca.ibm.com>
+Commit-Queue: Milad Farazmand <miladfar at ca.ibm.com>
+Cr-Commit-Position: refs/heads/master@{#69318}
+---
+ src/compiler/backend/ppc/code-generator-ppc.cc | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+index 337cd795ede..c18500f6e3b 100644
+--- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
++++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+@@ -1480,12 +1480,18 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
+       }
+       break;
+     case kPPC_MulHigh32:
+-      __ mulhw(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1),
+-               i.OutputRCBit());
++      __ mulhw(ip, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
++      // High 32 bits are undefined and need to be cleared.
++      __ li(r0, Operand(-1));
++      __ clrldi(r0, r0, Operand(32));
++      __ and_(i.OutputRegister(), ip, r0);
+       break;
+     case kPPC_MulHighU32:
+-      __ mulhwu(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1),
+-                i.OutputRCBit());
++      __ mulhwu(ip, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
++      // High 32 bits are undefined and need to be cleared.
++      __ li(r0, Operand(-1));
++      __ clrldi(r0, r0, Operand(32));
++      __ and_(i.OutputRegister(), ip, r0);
+       break;
+     case kPPC_MulDouble:
+       ASSEMBLE_FLOAT_BINOP_RC(fmul, MiscField::decode(instr->opcode()));
diff -Nru nodejs-12.18.2~dfsg/debian/patches/3f071e3.patch nodejs-12.18.2~dfsg/debian/patches/3f071e3.patch
--- nodejs-12.18.2~dfsg/debian/patches/3f071e3.patch	1970-01-01 01:00:00.000000000 +0100
+++ nodejs-12.18.2~dfsg/debian/patches/3f071e3.patch	2020-08-19 20:47:23.000000000 +0200
@@ -0,0 +1,39 @@
+From 3f071e3e7e15af187267af6c3b369029e27c8cf5 Mon Sep 17 00:00:00 2001
+From: Milad Farazmand <miladfar at ca.ibm.com>
+Date: Tue, 11 Aug 2020 17:57:09 +0000
+Subject: [PATCH] PPC: Optimize clearing higher bits of mulhw/mulhwu
+
+Change-Id: Ie3e14a6ef4531349e81a8ae741bc7470c7e547ca
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349468
+Reviewed-by: Junliang Yan <jyan at ca.ibm.com>
+Commit-Queue: Milad Farazmand <miladfar at ca.ibm.com>
+Cr-Commit-Position: refs/heads/master@{#69343}
+---
+
+diff --git a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+index c18500f..59cef69 100644
+--- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
++++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+@@ -1480,18 +1480,14 @@
+       }
+       break;
+     case kPPC_MulHigh32:
+-      __ mulhw(ip, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
++      __ mulhw(r0, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
+       // High 32 bits are undefined and need to be cleared.
+-      __ li(r0, Operand(-1));
+-      __ clrldi(r0, r0, Operand(32));
+-      __ and_(i.OutputRegister(), ip, r0);
++      __ clrldi(i.OutputRegister(), r0, Operand(32));
+       break;
+     case kPPC_MulHighU32:
+-      __ mulhwu(ip, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
++      __ mulhwu(r0, i.InputRegister(0), i.InputRegister(1), i.OutputRCBit());
+       // High 32 bits are undefined and need to be cleared.
+-      __ li(r0, Operand(-1));
+-      __ clrldi(r0, r0, Operand(32));
+-      __ and_(i.OutputRegister(), ip, r0);
++      __ clrldi(i.OutputRegister(), r0, Operand(32));
+       break;
+     case kPPC_MulDouble:
+       ASSEMBLE_FLOAT_BINOP_RC(fmul, MiscField::decode(instr->opcode()));
diff -Nru nodejs-12.18.2~dfsg/debian/patches/series nodejs-12.18.2~dfsg/debian/patches/series
--- nodejs-12.18.2~dfsg/debian/patches/series	2020-07-28 15:11:48.000000000 +0200
+++ nodejs-12.18.2~dfsg/debian/patches/series	2020-08-19 20:47:23.000000000 +0200
@@ -17,3 +17,5 @@
 ppc64.patch
 test-lowerseclevel.patch
 python2.patch
+1a9c676a141b32483b48884f8cc0330e64c8e17f.patch
+3f071e3.patch


More information about the Pkg-javascript-devel mailing list