moonjit / moonjit

Just-In-Time Compiler for the Lua Programming language. Fork of LuaJIT to continue development. This project does not have an active maintainer, see https://twitter.com/siddhesh_p/status/1308594269502885889?s=20 for more detail.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

powerpc bss plt is not compatible with mulsc

BKPepe opened this issue · comments

I have been able to compile Moonjit 2.1.2 and 2.2.0 for powerpc with soft-float (CPU Freescale P2020), but I received segfault with both versions. It seems to me like this issue, which is created at LuaJIT#481 as during compiling of Moonjit, I have the same message:

DYNLINK   libluajit.so
../powerpc-openwrt-linux-musl/bin/ld: bss-plt forced due to lj_vm_dyn.o
LINK      luajit
../powerpc-openwrt-linux-musl/bin/ld: bss-plt forced due to libluajit.a(lj_vm.o)

I tried to apply pull request LuaJIT#486, but I am not able to compile it due to following errors:

vm_ppc.dasc: In function 'build_subroutines':
vm_ppc.dasc:587:45: error: 'LJ_GOT___ledf2' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:2547:23: note: in expansion of macro 'DISPATCH_GOT'
   |  math_minmax math_max, 1
                       ^~~~~~      
vm_ppc.dasc:587:45: note: each undeclared identifier is reported only once for each function it appears in
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:2547:23: note: in expansion of macro 'DISPATCH_GOT'
   |  math_minmax math_max, 1
                       ^~~~~~      
vm_ppc.dasc: In function 'build_ins':
vm_ppc.dasc:587:45: error: 'LJ_GOT___ledf2' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:3729:25: note: in expansion of macro 'DISPATCH_GOT'
     if (op == BC_ISLT) {
                         ^           
vm_ppc.dasc:587:45: error: 'LJ_GOT___adddf3' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:4515:25: note: in expansion of macro 'DISPATCH_GOT'
     break;
                         ^           
vm_ppc.dasc:587:45: error: 'LJ_GOT___subdf3' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:4529:25: note: in expansion of macro 'DISPATCH_GOT'
     break;
                         ^           
vm_ppc.dasc:587:45: error: 'LJ_GOT___muldf3' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:4569:25: note: in expansion of macro 'DISPATCH_GOT'
     |.endif
                         ^           
vm_ppc.dasc:587:45: error: 'LJ_GOT___divdf3' undeclared (first use in this function)
 #define DISPATCH_GOT(name) (GG_DISP2GOT + 4*LJ_GOT_##name)
                                             ^
vm_ppc.dasc:4548:25: note: in expansion of macro 'DISPATCH_GOT'
     |  lwzx CARG3, BASE_HI, RC
                         ^~~~~~      

@seth-priya May I ask you if it will be possible to look at it?

Looks like you need to add __divdf3, __muldf3, etc in the GOTDEF definition in the LuaJIT#486 patch.