Marmalade: Angelscript runs fine on x86, crashes on ARM

Started by
34 comments, last by WitchLord 11 years, 3 months ago
Great. It looks like __S3E__ is a useful define to look for to identify Marmalade. With this it should no longer be necessary to manually define Marmalade anywhere. I3D_ARCH_ARM and I3D_ARCH_X86 etc will be used to determine for which CPU the library is compiled, and will control the code for the native calling conventions.

I'll make the necessary changes in the as_config.h, and let you know when it's checked in.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Advertisement
I've checked in the changes in revision 1490.

It should no longer be necessary to make any defines to compile AngelScript for Marmalade. Please give it a try and let me know if there are any problems.

Based on the tests that UltimateWalrus had made, I configured Marmalade to use the same ABI as is used for Android. It's possible that later on you'll find some functions that don't work properly if this assumption is incorrect. If that happens, please tell me and I'll make the necessary changes in the library.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Thanks Andreas! I really appreciate how responsive you are with fixes to AngelScript. I just tried out r1490 and it works perfectly as far as I can tell. I've put the new MKB in a separate branch for now, and I'll update "master" once 2.26 is released. The only "tweak" that I had to leave in was a definition of "fopen_s" that I put in preinclude.h, because Marmalade's standard library doesn't have that function available, even in Visual Studio.

Also, FYI, there are two compiler warnings that come up with Marmalade's ARM GCC4.4 (arm-none-eabi-g++); the first one looks like it could possibly affect bytecode output so I'll mention it in case you weren't aware of it.


angelscript/source/as_bytecode.cpp: In member function 'void asCByteCode::DebugOutput(const char*, asCScriptEngine*, asCScriptFunction*)':
angelscript/source/as_bytecode.cpp:2114: warning: format '%3d' expects type 'int', but argument 3 has type 'long unsigned int'


add_on/scripthelper/scripthelper.cpp: In function 'int WriteConfigToFile(asIScriptEngine*, const char*)':
add_on/scripthelper/scripthelper.cpp:194: warning: format '%X' expects type 'unsigned int', but argument 3 has type 'asDWORD'

The second warning occurs a total of ten times at different lines in scripthelper.cpp.
Thanks, these last issues should now be fixed in revision 1493.

You should not need the fopen_s tweak anymore. I had forgotten a few places were I was using fopen_s. These are in either case only used when compiling the library in debug mode.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Hi Andreas, I just found two more places where fopen_s is still causing that error even with the latest revision (if I omit the preinclude.h file) - both in add_ons:

scriptfile/scriptfile.cpp (line 320)
scripthelper/scripthelper.cpp (line 169)
Thanks. I'll have these fixed the same way (by adding a check for #if defined(__S3E__))

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

This topic is closed to new replies.

Advertisement