-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
node.js doesn't run on AR9331 : SIGILL , Illegal instruction #2633
Comments
It can also be related to floating point instructions. If it would be an endian issue you wouldn't even be able to run the binary up to the point that it throws a SIGILL. |
The Onion.io people have a nodejs build that works : http://repo.onion.io/omega/packages/libv8_0.1-1_ar71xx.ipk http://repo.onion.io/omega/packages/nodejs_v4.3.1-1_ar71xx.ipk |
Is "/sys/kernel/debug/mips/fpuemustats" directory exists? |
Yes, I think that's the problem : to run node.js , I need to make a kernel On Mon, May 2, 2016 at 1:16 AM, Hirokazu MORIKAWA [email protected]
|
BTW, I also filed a bug at https://dev.openwrt.org/ticket/22293 . Dunno As discussed in this web page : nodejs/node#4818 However, in linux-3.18.29/arch/mips/math-emu/cp1emu.c , I found this Note if you know that you won't have an FPU, then you'll get much better So a better fix is to compile node.js with -msoft-float . Though I suppose it would nice to have both -msoft-float and I don't know why the Linkit 7688 builds with MIPS_FPU_EMULATOR=y , but the Thanks, On Tue, May 3, 2016 at 8:50 PM, Ken Harris [email protected] wrote:
|
Has anyone tried compiling node.js with -msoft-float instead an run on AR9331 board without MIPS_FPU_EMULATOR=y yet? |
Using http://repo.onion.io/omega/packages/nodejs_0.1-1_ar71xx.ipk and http://repo.onion.io/omega/packages/libv8_0.1-1_ar71xx.ipk solved my problem, not V4.5.0. |
NodeJS has dropped MIPS soft-float support long ago. Running a kernel with FPU emulation is the only way to use node on ar71xx. |
It requires a hardware or software emulated fpu, otherwise the program can fail with SIGILL. See openwrt#1937, openwrt#2633, openwrt#2442, FS#1257 for details Signed-off-by: Yousong Zhou <[email protected]>
It requires either hardware or software emulated fpu, otherwise program can fail with SIGILL for fp instructions emitted by the JIT compiler See openwrt#1937, openwrt#2633, openwrt#2442, FS#1257 for details From code snippet at deps/v8/src/mips/constants-mips.h #elif(defined(__mips_soft_float) && __mips_soft_float != 0) // This flag is raised when -msoft-float is passed to the compiler. // // Although FPU is a base requirement for v8, soft-float ABI is used // // on soft-float systems with FPU kernel emulation. // const bool IsMipsSoftFloatABI = true; [1] https://bugs.chromium.org/p/v8/issues/detail?id=4704 Signed-off-by: Yousong Zhou <[email protected]>
It requires either hardware or software emulated fpu, otherwise program can fail with SIGILL for fp instructions emitted by the JIT compiler See openwrt#1937, openwrt#2633, openwrt#2442, FS#1257 for details From code snippet at deps/v8/src/mips/constants-mips.h #elif(defined(__mips_soft_float) && __mips_soft_float != 0) // This flag is raised when -msoft-float is passed to the compiler. // // Although FPU is a base requirement for v8, soft-float ABI is used // // on soft-float systems with FPU kernel emulation. // const bool IsMipsSoftFloatABI = true; [1] https://bugs.chromium.org/p/v8/issues/detail?id=4704 Signed-off-by: Yousong Zhou <[email protected]>
It requires either hardware or software emulated fpu, otherwise program can fail with SIGILL for fp instructions emitted by the JIT compiler See openwrt#1937, openwrt#2633, openwrt#2442, FS#1257 for details From code snippet at deps/v8/src/mips/constants-mips.h #elif(defined(__mips_soft_float) && __mips_soft_float != 0) // This flag is raised when -msoft-float is passed to the compiler. // // Although FPU is a base requirement for v8, soft-float ABI is used // // on soft-float systems with FPU kernel emulation. // const bool IsMipsSoftFloatABI = true; [1] https://bugs.chromium.org/p/v8/issues/detail?id=4704 Signed-off-by: Yousong Zhou <[email protected]>
It requires either hardware or software emulated fpu, otherwise program can fail with SIGILL for fp instructions emitted by the JIT compiler See #1937, #2633, #2442, FS#1257 for details From code snippet at deps/v8/src/mips/constants-mips.h #elif(defined(__mips_soft_float) && __mips_soft_float != 0) // This flag is raised when -msoft-float is passed to the compiler. // // Although FPU is a base requirement for v8, soft-float ABI is used // // on soft-float systems with FPU kernel emulation. // const bool IsMipsSoftFloatABI = true; [1] https://bugs.chromium.org/p/v8/issues/detail?id=4704 Signed-off-by: Yousong Zhou <[email protected]>
It requires either hardware or software emulated fpu, otherwise program can fail with SIGILL for fp instructions emitted by the JIT compiler See openwrt#1937, openwrt#2633, openwrt#2442, FS#1257 for details From code snippet at deps/v8/src/mips/constants-mips.h #elif(defined(__mips_soft_float) && __mips_soft_float != 0) // This flag is raised when -msoft-float is passed to the compiler. // // Although FPU is a base requirement for v8, soft-float ABI is used // // on soft-float systems with FPU kernel emulation. // const bool IsMipsSoftFloatABI = true; [1] https://bugs.chromium.org/p/v8/issues/detail?id=4704 Signed-off-by: Yousong Zhou <[email protected]>
I think this is an "endian" issue. AR9331 is big endian. I tried on an "Linkit Smart 7688" (MediaTek) with CC 15.05.1, which is little endian, and it runs fine.
I tried in on an "Onion Omega" running CC 15.05.1 and a Carambola2 running "Bleeding Edge r49221" and both give SIGILL .
I tried to compile it myself with various endian flags, but still get SIGILL. I'll keep trying...
The text was updated successfully, but these errors were encountered: