Merge pull request #2675 from NeoRaider/update-node
node: update and fix GCC 6 miscompile
This commit is contained in:
commit
cb5a8f9751
6 changed files with 86 additions and 21 deletions
|
@ -8,17 +8,21 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=node
|
PKG_NAME:=node
|
||||||
PKG_VERSION:=v0.12.13
|
PKG_VERSION:=v4.4.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=node-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=node-$(PKG_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=http://nodejs.org/dist/${PKG_VERSION}
|
PKG_SOURCE_URL:=http://nodejs.org/dist/${PKG_VERSION}
|
||||||
|
PKG_MD5SUM:=1ad7915688df85f62a57f43860dc54c6
|
||||||
|
|
||||||
HOST_BUILD_DEPENDS:=python/host
|
HOST_BUILD_DEPENDS:=python/host
|
||||||
PKG_BUILD_DEPENDS:=python/host
|
PKG_BUILD_DEPENDS:=python/host
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
PKG_USE_MIPS16:=0
|
PKG_USE_MIPS16:=0
|
||||||
|
|
||||||
|
HOST_BUILD_PARALLEL:=1
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
|
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
|
||||||
PKG_LICENSE:=
|
PKG_LICENSE:=
|
||||||
|
|
||||||
|
@ -31,7 +35,7 @@ define Package/node
|
||||||
SUBMENU:=Node.js
|
SUBMENU:=Node.js
|
||||||
TITLE:=Node.js is a platform built on Chrome's JavaScript runtime
|
TITLE:=Node.js is a platform built on Chrome's JavaScript runtime
|
||||||
URL:=http://nodejs.org/
|
URL:=http://nodejs.org/
|
||||||
DEPENDS:=+libpthread +librt +libstdcpp +libopenssl +libuv
|
DEPENDS:=+libpthread +librt +libstdcpp +libopenssl +libuv +zlib
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/node/description
|
define Package/node/description
|
||||||
|
|
12
lang/node/patches/001-hardfloat.patch
Normal file
12
lang/node/patches/001-hardfloat.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc
|
||||||
|
index 4f58720..1f3071e 100644
|
||||||
|
--- a/deps/v8/src/base/cpu.cc
|
||||||
|
+++ b/deps/v8/src/base/cpu.cc
|
||||||
|
@@ -143,6 +143,7 @@ int __detect_fp64_mode(void) {
|
||||||
|
".set push\n\t"
|
||||||
|
".set noreorder\n\t"
|
||||||
|
".set oddspreg\n\t"
|
||||||
|
+ ".set hardfloat\n\t"
|
||||||
|
"lui $t0, 0x3FF0\n\t"
|
||||||
|
"ldc1 $f0, %0\n\t"
|
||||||
|
"mtc1 $t0, $f1\n\t"
|
|
@ -1,15 +0,0 @@
|
||||||
--- a/deps/v8/build/toolchain.gypi
|
|
||||||
+++ b/deps/v8/build/toolchain.gypi
|
|
||||||
@@ -50,10 +50,10 @@
|
|
||||||
'arm_test_noprobe%': 'off',
|
|
||||||
|
|
||||||
# Similar to vfp but on MIPS.
|
|
||||||
- 'v8_can_use_fpu_instructions%': 'true',
|
|
||||||
+ 'v8_can_use_fpu_instructions%': 'false',
|
|
||||||
|
|
||||||
# Similar to the ARM hard float ABI but on MIPS.
|
|
||||||
- 'v8_use_mips_abi_hardfloat%': 'true',
|
|
||||||
+ 'v8_use_mips_abi_hardfloat%': 'false',
|
|
||||||
|
|
||||||
# Default arch variant for MIPS.
|
|
||||||
'mips_arch_variant%': 'r2',
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/deps/uv/src/unix/getaddrinfo.c
|
--- a/deps/uv/src/unix/getaddrinfo.c
|
||||||
+++ b/deps/uv/src/unix/getaddrinfo.c
|
+++ b/deps/uv/src/unix/getaddrinfo.c
|
||||||
@@ -99,6 +99,7 @@
|
@@ -99,6 +99,7 @@ static void uv__getaddrinfo_work(struct
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
req = container_of(w, uv_getaddrinfo_t, work_req);
|
req = container_of(w, uv_getaddrinfo_t, work_req);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
--- a/lib/module.js
|
--- a/lib/module.js
|
||||||
+++ b/lib/module.js
|
+++ b/lib/module.js
|
||||||
@@ -512,7 +512,8 @@
|
@@ -453,7 +453,8 @@ Module._initPaths = function() {
|
||||||
var homeDir = process.env.HOME;
|
homeDir = process.env.HOME;
|
||||||
}
|
}
|
||||||
|
|
||||||
- var paths = [path.resolve(process.execPath, '..', '..', 'lib', 'node')];
|
- var paths = [path.resolve(process.execPath, '..', '..', 'lib', 'node')];
|
||||||
|
|
64
lang/node/patches/004-gcc6-undefined-behaviour.patch
Normal file
64
lang/node/patches/004-gcc6-undefined-behaviour.patch
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
diff --git a/deps/v8/src/heap/incremental-marking.cc b/deps/v8/src/heap/incremental-marking.cc
|
||||||
|
index 58eb0aa..b2b796f 100644
|
||||||
|
--- a/deps/v8/src/heap/incremental-marking.cc
|
||||||
|
+++ b/deps/v8/src/heap/incremental-marking.cc
|
||||||
|
@@ -364,7 +364,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();
|
||||||
|
}
|
||||||
|
@@ -396,7 +396,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 c2c4d12..d63ee63 100644
|
||||||
|
--- a/deps/v8/src/heap/spaces-inl.h
|
||||||
|
+++ b/deps/v8/src/heap/spaces-inl.h
|
||||||
|
@@ -155,7 +155,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 0806b25..c0e109b 100644
|
||||||
|
--- a/deps/v8/src/heap/spaces.cc
|
||||||
|
+++ b/deps/v8/src/heap/spaces.cc
|
||||||
|
@@ -2953,7 +2953,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 3461de3..e35c057 100644
|
||||||
|
--- a/deps/v8/src/heap/spaces.h
|
||||||
|
+++ b/deps/v8/src/heap/spaces.h
|
||||||
|
@@ -278,9 +278,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_));
|
Loading…
Reference in a new issue