This updates: * node * node-arduino-firmata * node-cylon * node-hid * node-serialport to their version used in LEDE v17.01.6. This fixes compile errors appearing on Debian Sid. A list of the patches picked from upstream (x'd ones excluded): $ git log --oneline 8ca186cd59..HEAD lang/node lang/node-arduino-firmata/ lang/node-cylon/ lang/node-hid/ lang/node-serialport/ x 4a984a8d6 treewide: replace $(STAGING_DIR)/host and $(HOST_BUILD_PREFIX) with $(STAGING_DIR_HOSTPKG) x 844638d51 Merge pull request #3056 from plntyk/fix_node 0da71b8f8 node: use default host install prefix def97187d Treewide fix of typo: PKG_LICENSE_FILE --> PKG_LICENSE_FILES bc86e32d4 node: fix soft/hard float compile on arm/mips 865f44ef7 node,node-*: node update to v4.4.5 and Enhance CPU-arch variant. a3148b64e node-hid: fix git submodule issue aa9202fac node-hid: fix compile error c9115cdf5 node-*: node update to v4.4.4 x bbce5fce7 node: fix undefined behaviour leading to broken code with GCC 6 9125c3615 node: update to v4.4.4 5a118cda9 node update v0.12.13 x fb744a658 Merge pull request #2486 from yousong/cp-fix bca789b6b node-* : specify npm_config_cache directory ac000220c node-* : specify npm_config_cache directory 47f466e88 node-* : specify npm_config_cache directory 10c6b4110 node-* : specify npm_config_cache directory a82363f0a node-serialport: add node host dependency 0498c8ae2 node-hid: add node host dependency a64623683 node-cylon: add node host dependency 2b8a17de0 node-arduino-firmata: add node host dependency 92b0575e2 Drop the redundant -r option to $(CP) x 9f8e5aca3 treewide: use $(STAGING_DIR)/host instead of $(STAGING_DIR_HOST), sync with changes in trunk e5ca27a97 node: fix build on x86 & x86.64 targets x 659719005 node: add python/host to HOST_BUILD_DEPENDS as well Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
81 lines
3.3 KiB
Diff
81 lines
3.3 KiB
Diff
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
Date: Mon, 9 May 2016 16:21:57 +0200
|
|
Subject: node: fix undefined behaviour leading to broken code with GCC 6
|
|
|
|
Fixes segfaults occuring in the node host build when GCC 6 is used.
|
|
|
|
Backport of upstream commit 96198d5bc710a4e3ca49eeeb3b3fa7b8cb61547d.
|
|
|
|
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
|
|
diff --git a/lang/node/patches/004-gcc6-undefined-behaviour.patch b/lang/node/patches/004-gcc6-undefined-behaviour.patch
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..dbbbcf0c54bb62f643521411668772531d42b89a
|
|
--- /dev/null
|
|
+++ b/lang/node/patches/004-gcc6-undefined-behaviour.patch
|
|
@@ -0,0 +1,64 @@
|
|
+diff --git a/deps/v8/src/heap/incremental-marking.cc b/deps/v8/src/heap/incremental-marking.cc
|
|
+index c922e83..2ead8be 100644
|
|
+--- a/deps/v8/src/heap/incremental-marking.cc
|
|
++++ b/deps/v8/src/heap/incremental-marking.cc
|
|
+@@ -379,7 +379,7 @@ void IncrementalMarking::DeactivateIncrementalWriteBarrier() {
|
|
+ DeactivateIncrementalWriteBarrierForSpace(heap_->new_space());
|
|
+
|
|
+ LargePage* lop = heap_->lo_space()->first_page();
|
|
+- while (lop->is_valid()) {
|
|
++ while (LargePage::IsValid(lop)) {
|
|
+ SetOldSpacePageFlags(lop, false, false);
|
|
+ lop = lop->next_page();
|
|
+ }
|
|
+@@ -414,7 +414,7 @@ void IncrementalMarking::ActivateIncrementalWriteBarrier() {
|
|
+ ActivateIncrementalWriteBarrier(heap_->new_space());
|
|
+
|
|
+ LargePage* lop = heap_->lo_space()->first_page();
|
|
+- while (lop->is_valid()) {
|
|
++ while (LargePage::IsValid(lop)) {
|
|
+ SetOldSpacePageFlags(lop, true, is_compacting_);
|
|
+ lop = lop->next_page();
|
|
+ }
|
|
+diff --git a/deps/v8/src/heap/spaces-inl.h b/deps/v8/src/heap/spaces-inl.h
|
|
+index 56c2bad..1a45096 100644
|
|
+--- a/deps/v8/src/heap/spaces-inl.h
|
|
++++ b/deps/v8/src/heap/spaces-inl.h
|
|
+@@ -148,7 +148,7 @@ Page* Page::Initialize(Heap* heap, MemoryChunk* chunk, Executability executable,
|
|
+
|
|
+ bool PagedSpace::Contains(Address addr) {
|
|
+ Page* p = Page::FromAddress(addr);
|
|
+- if (!p->is_valid()) return false;
|
|
++ if (!Page::IsValid(p)) return false;
|
|
+ return p->owner() == this;
|
|
+ }
|
|
+
|
|
+diff --git a/deps/v8/src/heap/spaces.cc b/deps/v8/src/heap/spaces.cc
|
|
+index e197f5a..2fe10eb 100644
|
|
+--- a/deps/v8/src/heap/spaces.cc
|
|
++++ b/deps/v8/src/heap/spaces.cc
|
|
+@@ -2918,7 +2918,7 @@ LargePage* LargeObjectSpace::FindPage(Address a) {
|
|
+ if (e != NULL) {
|
|
+ DCHECK(e->value != NULL);
|
|
+ LargePage* page = reinterpret_cast<LargePage*>(e->value);
|
|
+- DCHECK(page->is_valid());
|
|
++ DCHECK(LargePage::IsValid(page));
|
|
+ if (page->Contains(a)) {
|
|
+ return page;
|
|
+ }
|
|
+diff --git a/deps/v8/src/heap/spaces.h b/deps/v8/src/heap/spaces.h
|
|
+index 312d75f..1054672 100644
|
|
+--- a/deps/v8/src/heap/spaces.h
|
|
++++ b/deps/v8/src/heap/spaces.h
|
|
+@@ -283,9 +283,9 @@ class MemoryChunk {
|
|
+ // Only works for addresses in pointer spaces, not data or code spaces.
|
|
+ static inline MemoryChunk* FromAnyPointerAddress(Heap* heap, Address addr);
|
|
+
|
|
+- Address address() { return reinterpret_cast<Address>(this); }
|
|
++ static bool IsValid(MemoryChunk* chunk) { return chunk != nullptr; }
|
|
+
|
|
+- bool is_valid() { return address() != NULL; }
|
|
++ Address address() { return reinterpret_cast<Address>(this); }
|
|
+
|
|
+ MemoryChunk* next_chunk() const {
|
|
+ return reinterpret_cast<MemoryChunk*>(base::Acquire_Load(&next_chunk_));
|