SmartXiaoMing
SmartXiaoMing

Reputation: 121

how to compile node-v4.2.4 with armv7 without fpu?

I have a device whose cpu is armv7 but without fpu.

I can compile node with option --with-arm-float-abi=soft, but when I run "node", "Illegal instruction (core dumped)" happened.

root@router:/tmp/target/bin# ./node -v    
v4.2.4    
root@router:/tmp/target/bin# ./node --v8-options | head -2    
target arm v7 vfp3 soft    
ARMv7=1 VFP3=1 VFP32DREGS=0 NEON=0 SUDIV=0 UNALIGNED_ACCESSES=1 
MOVW_MOVT_IMMEDIATE_LOADS=0 COHERENT_CACHE=0 USE_EABI_HARDFLOAT=0

The tool objdump showed me that there are instructions (such as vpush, vpop...) in use which are not supported by my cpu (arm v7 without fpu).

For the further, I found openssl and v8 in the source of node use fpu's instructions.

the configure line as below

./configure \
    --prefix=target \
    --dest-cpu=arm \
    --dest-os=linux \
    --without-snapshot \
    --with-arm-float-abi=soft \
    --fully-static

Can somebody tell me how to compile node-v4.2.4 without fpu supported?

source code: nodejs-v4.2.2

arm version: Cortex-A9 Floating-Point Unit (FPU)(Optional)

Upvotes: 4

Views: 850

Answers (2)

lezsakdomi
lezsakdomi

Reputation: 125

It's impossible. V8 does not support no fpu mode since 3.18 (https://github.com/nodejs/node/issues/4447#issuecomment-168549889), the assumption is that the kernel can emulate the FPU for you. And NodeJS is based on V8.

Relavant comment in the source code: https://github.com/v8/v8/blob/master/src/arm/assembler-arm.cc#L174

It's clarified in v8-users mailing list too.

Upvotes: 0

SmartXiaoMing
SmartXiaoMing

Reputation: 121

After many tries, I used node-v0.10.14 instead, which works well without fpu supported. ;-)

So I still do not known how to compile nodejs-v4.2.2 without fpu supported.

Upvotes: 3

Related Questions