New issue 1446 by HairyOne42: V8 build errors, and Date() faulty
http://code.google.com/p/v8/issues/detail?id=1446
I'm running NodeJS 4.8
on a limited box, using
cat /proc/cpuinfo
Processor : ARM926EJ-Sid(wb) rev 0 (v5l)
BogoMIPS : 331.77
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 0
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 32768
I assoc : 1
I line length : 32
I sets : 1024
D size : 32768
D assoc : 1
D line length : 32
D sets : 1024
Hardware : MV-88fxx81
Revision : 0000
Serial : 0000000000000000
______________
my routine is simply :
new Date();
result:
Fri undefined NaN NaN 17:05.299808824e-315:21 GMT+1200 (GMT)
in calling node I used:
node --noenable-vfp3 --enable_armv7 (name of routine)
in doing a --log-all, it includes the following:
api,Date::New
code-creation,LazyCompile,0x42592340,224,"CreateDate native
apinatives.js:33",0x4235f99c,
code-creation,LazyCompile,0x42592420,448,"setTime native
date.js:771",0x4236e63c,
api,Date::New
code-creation,LoadIC,0x425925e0,84,"$Date"
code-creation,LoadIC,0x425925e0,84,"$Date"
code-creation,CallIC,0x42592640,152,"setTime"
code-creation,CallIC,0x425926e0,116,"ToNumber"
code-creation,CallIC,0x42592760,116,"TimeClip"
code-creation,CallIC,0x425927e0,116,"$isFinite"
code-creation,LoadIC,0x42592860,84,"$NaN"
code-creation,LoadIC,0x42592860,84,"$NaN"
api,Date::New
api,CloseHandleScope
Thats about it for the date part ( I have no idea what else to do !!)
I did get problems at compile time (during install of NodeJS)
nodejs - no errors, but
during compile of V8 part - resulted in about 8 errors in different places
- always 'illegal instruction'.
Ran 'Make' again and it went on to the next error (untill the end)
everything else appears to be working, except the date()
even new Date(2011,6,5,4,3,2) comes up as 'Invalid Date'.
I'm running a DNS323, with ffp ( a debian minimal build)
an OLD compiler gcc 4.1.3,
can't think what else I need to say or add!!
HELP
I have a similar problem with Date() running on a Arm v5 platform
(SheevaPlug). The first call to Date() seems to work okay, but the second
call returns something undefined. Were you able to resolve your issue?
Here's the simplest way to produce my issue:
root@debian:~# node
> console.log(Date());
Sat Jul 09 2011 05:17:44 GMT-0700 (PDT)
> console.log(Date());
undefined Jul 09 2011 07.19506e-317:60:51 GMT-0700 (PDT)
It appears that the compiler I'm using with the type of CPU, craps out!!
the problem was first noticed about October last year and was fixed in
early March 2011.
However, the latest build of NodeJS has picked up their version of V8 9
days before the fix was applied!!!!!!! (buggar, buggar, buggar)
so hopefully the next NodeJS will have a later version of V8.
(4.9 and 5 have the same V8 - as a matter of interest)
I want to develop my software on my target (the DNS323), however - now that
I know what the problem is, and that it will (EVENTUALLY) be fixed. I have
set up a new portable (brought new - therefore clean) machine with Debian
and am developing on that ( only in JS anyway - so, easy to transport)
Hope this answers your questions.
btw. the fault on mine appeared to be with parseInt, but showed up
instantly by date!! even new Date()........
good luck
DNS320, Fonzplug, NodeJS, Funplug, (DNS323, my original target) also
appears to apply to sheeva plug!!
(as a matter of interest 323 takes about 7.5 hours to compile, whilst 320
takes 1hr, 3 minutes!!)
(also compile on 1G8 Intel Linux (Debian) takes about 15 minutes)
========================
NOTE: on fonz plug - you need the following installed:
binutils
kernel-headers
uclibc
gcc
make
gettext
patch
bison
flex
autoconf
automake
=======================
then you can:
exported TMPDIR=/ffp/tmp (need this to put tmp files on HD not memory!)
export CC='gcc -march=armv5te -mfloat-abi=soft -fno-tree-sink -O0'
export CCFLAGS='-march=armv5te -mfloat-abi=soft -fno-tree-sink -O0'
export CXX='g++ -march=armv5te -mfloat-abi=soft -fno-tree-sink -O0'
export GCC='-march=armv5te -mfloat-abi=soft -fno-tree-sink -O0'
./configure --prefix=/ffp --without-snapshot
......
make
.............
make install
----------------------------
Notes:
----------------------------
I have had experience with NodeJS 0.4.9 - so I have kept using it - read on
as to why!!
actually compiles without error!!
BUT!
when run - Illegal instruction - pops up
------
this appears to be because V8 is EXPECTED to be compiled on a host machine
that is NOT an arm!!
see below for references I've found: (It has taken me 6 months to find all
these)
Someone, somewhere has decided that running on ARM is an embedded
environment, therefore you won't ever compile on it!!
Can someone with authority fix this!!!!!!!!
The fact that I can get a clean compile, says it can work, but at least V8
doesn't want us too????
original instructions:
https://github.com/joyent/node/wiki/Installation
What else I have found:
http://code.google.com/p/v8/wiki/CrossCompilingForARM
http://code.google.com/p/v8/issues/detail?id=1632&q=vfp%20off&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary%20HW%20OS%20Area%20Stars
https://github.com/joyent/node/issues/1566
http://fastr.github.com/articles/Node.js-on-OpenEmbedded.html
http://freebsd.1045724.n5.nabble.com/problems-with-cvsup-on-FreeBSD-9-snapshot-201101-td4491053.html
http://code.google.com/p/v8/issues/detail?id=1446
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0133c/index.html
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0007e/QRC0007_VFP.pdf
and from this article, the minimum installs of fonz stuff that needs to be
pre-installed:
http://www.shadowandy.net/2008/08/adding-compiling-capabilities-to-your-dns-323.htm
DNS323 - wiki site (new one??!!)
http://dns323.kood.org/dns-320
compiler options:
http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
debugging options:
http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
Interest:
http://itrs.tw/wiki/Code_Sourcery_G%2B%2B_Lite
-------
why 0.4.9, and not 0.6.6?
6.6 may be crapping out in same place but error says EABI error, compiler
with Fonz doesn't understand EABI.
But I think error is same - in 4.9 the error says 'illegal instruction',
I think the V8 guys (or node guys) have relabelled the error descriptor to
EABI, I don't know enough to trace problem.
There are heaps of other switches available for the comilers - I have given
up trying them all (other people seem to have found the same problem, they
are MUCH
more knowledgable than I am, so I am going to assume that they have tried
all the available switches that could make a difference).
As a matter of interest the V8 compile only uses the CXXFLAGS switch to
compile with, whilst the rest of NodeJS seems to use the others I have
labelled!!
-----
Also note that in order to get snapshot running it points to /tmp - no
matter what I do, -
I ended up moving /tmp to /tmp1, and ln -s /tmp /ffp/tmp
ie
mv /tmp /tmp1
ln -s /tmp /ffp/tmp
------