From e59ee9f0ba8c531431d7799adc6b6fab8d0ab924 Mon Sep 17 00:00:00 2001 From: "Peter A. Bigot" Date: Sun, 9 Jul 2017 07:34:38 -0500 Subject: [PATCH] nodejs_6: backport upstream fix for builds with gcc 7.1 Upstream discussion at: https://github.com/nodejs/node/pull/13574 Signed-off-by: Peter A. Bigot --- .../nodejs/files/v6x-gcc7-fixes.patch | 98 +++++++++++++++++++ recipes-devtools/nodejs/nodejs_6.inc | 5 +- 2 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 recipes-devtools/nodejs/files/v6x-gcc7-fixes.patch diff --git a/recipes-devtools/nodejs/files/v6x-gcc7-fixes.patch b/recipes-devtools/nodejs/files/v6x-gcc7-fixes.patch new file mode 100644 index 00000000..c63d9e69 --- /dev/null +++ b/recipes-devtools/nodejs/files/v6x-gcc7-fixes.patch @@ -0,0 +1,98 @@ +From 11c7e0164af7f6b33df13a658fc1c0effb502662 Mon Sep 17 00:00:00 2001 +From: Zuzana Svetlikova +Date: Fri, 9 Jun 2017 14:07:19 +0200 +Subject: [PATCH] v8: fix build errors with g++ 7 + +This is a local patch because upstream fixed it differently by moving +large chunks of code out of objects.h. We cannot easily back-port +those changes due to their size and invasiveness. + +Fixes: https://github.com/nodejs/node/issues/10388 +PR-URL: https://github.com/nodejs/node/pull/12392 +Backport-PR-URL: https://github.com/nodejs/node/pull/13574 +Reviewed-By: Anna Henningsen +Reviewed-By: Benjamin Gruenbaum +Reviewed-By: Daniel Bevenius +Reviewed-By: James M Snell +--- + deps/v8/src/objects-body-descriptors.h | 2 +- + deps/v8/src/objects-inl.h | 21 +++++++++++++++++++++ + deps/v8/src/objects.h | 20 ++++---------------- + 3 files changed, 26 insertions(+), 17 deletions(-) + +diff --git a/deps/v8/src/objects-body-descriptors.h b/deps/v8/src/objects-body-descriptors.h +index 91cb8883be8..a1c3634bd76 100644 +--- a/deps/v8/src/objects-body-descriptors.h ++++ b/deps/v8/src/objects-body-descriptors.h +@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase { + + template + static inline void IterateBody(HeapObject* obj, int object_size) { +- IterateBody(obj); ++ IterateBody(obj); + } + }; + +diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h +index 11f4d7498d7..72208c2f00f 100644 +--- a/deps/v8/src/objects-inl.h ++++ b/deps/v8/src/objects-inl.h +@@ -36,6 +36,27 @@ + namespace v8 { + namespace internal { + ++template ++uint32_t HashTable::Hash(Key key) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHash(key, GetHeap()->HashSeed()); ++ } else { ++ return Shape::Hash(key); ++ } ++} ++ ++ ++template ++uint32_t HashTable::HashForObject(Key key, ++ Object* object) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); ++ } else { ++ return Shape::HashForObject(key, object); ++ } ++} ++ ++ + PropertyDetails::PropertyDetails(Smi* smi) { + value_ = smi->value(); + } +diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h +index d1632c9deb2..47b02dadcff 100644 +--- a/deps/v8/src/objects.h ++++ b/deps/v8/src/objects.h +@@ -3261,22 +3261,10 @@ class HashTableBase : public FixedArray { + template + class HashTable : public HashTableBase { + public: +- // Wrapper methods +- inline uint32_t Hash(Key key) { +- if (Shape::UsesSeed) { +- return Shape::SeededHash(key, GetHeap()->HashSeed()); +- } else { +- return Shape::Hash(key); +- } +- } +- +- inline uint32_t HashForObject(Key key, Object* object) { +- if (Shape::UsesSeed) { +- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); +- } else { +- return Shape::HashForObject(key, object); +- } +- } ++ // Wrapper methods. Defined in src/objects-inl.h ++ // to break a cycle with src/heap/heap.h. ++ inline uint32_t Hash(Key key); ++ inline uint32_t HashForObject(Key key, Object* object); + + // Returns a new HashTable object. + MUST_USE_RESULT static Handle New( diff --git a/recipes-devtools/nodejs/nodejs_6.inc b/recipes-devtools/nodejs/nodejs_6.inc index 08909f53..6cce5e14 100644 --- a/recipes-devtools/nodejs/nodejs_6.inc +++ b/recipes-devtools/nodejs/nodejs_6.inc @@ -8,13 +8,14 @@ COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*" COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*" INC_PR = "r1" -PR = "${INC_PR}.8" +PR = "${INC_PR}.9" PROVIDES = "node" RPROVIDES_${PN} = "node" SRC_URI = "https://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz;name=src \ - file://no-registry_6.x.patch" + file://no-registry_6.x.patch \ + file://v6x-gcc7-fixes.patch" S = "${WORKDIR}/node-v${PV}"