lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




2011/6/3 Xavier Wang <weasley.wx@gmail.com>


2011/6/3 Mike Pall <mikelu-1106@mike.de>
Xavier Wang wrote:
> I'm tried port beta7 to Symbian and it worked. but the git HEAD jit version
> of luaJIT fault with linker error below:
>
> arm-none-symbianelf-ld: e:\nokia\csl arm
> toolchain\bin\..\arm-none-symbianelf\lib\libsupc++.a(eh_personality.o)(.text.__gxx_personality_v0+0x58):
> unresolvable R_ARM_CALL relocation against symbol `_Unwind_VRS_Set@
> @drtaeabi{000a0000}.dll'
> arm-none-symbianelf-ld: final link failed: Nonrepresentable section on
> output

Looks like Symbian doesn't comply to the ARM exception handling ABI
and/or the toolchain is not set up for that. Anyway, I've disabled
this now for Symbian. Please git pull and try again.

Yes, and Symbian doesn't have log2/exp2/trunc :( I have to add a math-fixed.h in lj_ir.c, lj_opt_fold.c and lib_math.c

the Symbian port is compile ok, but I like to test in my PC Box before install it on my e72i, and I find a strange place:

I build lua51.lib using msvcbuild.bat, and it works good (I notice a great performance improve on Windows), but, when I buildvm for five .h file and lj_vm.obj, and put all source into my project, the program hit a user break point (int3) in lj_BC_JFUNCV, I noticed that is not Implement, but the question is, Why the same lua sources, the same other sources and lua51.lib don't hit this breakpoint but in my own project it touched?

but after all, thank you very much for such a great miracle:)


--Mike


I notice that new HEAD in git repo add exp2/log2 support for symbian :)
this patch add missing stdint.h for lj_def.h:

diff --git a/src/lj_def.h b/src/lj_def.h
index 197df29..b7fa116 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -25,6 +25,17 @@ typedef unsigned __int64 uintptr_t;
 typedef __int32 intptr_t;
 typedef unsigned __int32 uintptr_t;
 #endif
+#elif __symbian__
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef long int int32_t;
+typedef long long int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned long int uint32_t;
+typedef unsigned long long uint64_t;
+typedef long int intptr_t;
+typedef unsigned long int uintptr_t;
 #else
 #include <stdint.h>
 #endif