      GHC.Integer.Logarithms
 diff -X ../utils/updatePatches.excludes -Nru upstream/pkg/integer-gmp/jsbits/ghcjsbn.js boot/pkg/integer-gmp/jsbits/ghcjsbn.js
 --- upstream/pkg/integer-gmp/jsbits/ghcjsbn.js	1970-01-01 01:00:00.000000000 +0100
-+++ boot/pkg/integer-gmp/jsbits/ghcjsbn.js	2019-07-31 01:47:50.000000000 +0200
-@@ -0,0 +1,2149 @@
++++ boot/pkg/integer-gmp/jsbits/ghcjsbn.js	2019-08-19 09:29:36.000000000 +0200
+@@ -0,0 +1,2142 @@
 +/*
 +   GHCJS bignum library for integer-gmp package
 +

+error "no mkInteger implementation for specified GHCJSBN_BITS"
+#endif
+
+// BigNat -> Int -> Int
+function h$ghcjsbn_indexBigNat(b, i) {
+  ASSERTVALID_B(b, "indexBigNat");
+  ASSERTVALID_S(i, "indexBigNat");
+  var bl = b[0];
+  return i >= bl ? 0 : b[i+1];
+}
+
+// BigNat -> Word -> Int (Ordering)
+function h$ghcjsbn_cmp_bw(b, w) {
+  ASSERTVALID_B(b, "cmp_bw");

+  return Math.ceil((bl * GHCJSBN_BITS) / 32);
+}
+
+#if GHCJSBN_BITS == 28
+// extract a word from a BigNat
+function h$ghcjsbn_index_b(b, w) {
+  var limb = (32 * w / 28)|0;
+  var l    = b[0];
+  var l1   = limb < l ? b[limb+1] : 0;
+  var l2   = (limb+1) < l ? b[limb+2] : 0;
+  var ws   = 4 * (w % 7);
+  return (l1 >>> ws) | (l2 << 28 - ws);
+}
+#else
+#error "ghcjsbn_index_b not implemented for current number of bits per limb";
+#endif
+
+// Bool -> BigNat -> Double
+function h$ghcjsbn_toDouble_b(nonNeg, b) {
