I'm porting Kaffe to an ARM-like processor. Now JIT works OK. I find an error in JIT for ARM in my porting work.
Hi,
thanks for your bug report & the endurance to find the problem.
But if we use GCC's O2 option to compile Kaffe, GCC will optimize the prologue of the two functions (throwExternalException and buildStackTrace) and thus destroy the stack trace structure. You can use GCC -O2 -S to compile some programs and find that FP register disappears in the prologue of the function. (I trace the error for several days. I am cracy:). Finally I disassembled the libkaffe.so and read the assemble code of the two functions. I find the bug!)
So we must not use O2 option to compile exception.c and stackTrace.c.
Any suggestion is welcome.
ouch. Some kaffe ports ports explicitely pass -fno-omit-frame-pointer to gcc in config.frag. I've created such a patch for arm-linux. Could you give it a try to see if that fixes the problem of the missing fp for you?
cheers, dalibor topic
Index: config/arm/linux/config.frag =================================================================== RCS file: /cvs/kaffe/kaffe/config/arm/linux/config.frag,v retrieving revision 1.7 diff -u -r1.7 config.frag --- config/arm/linux/config.frag 4 Aug 2003 09:20:01 -0000 1.7 +++ config/arm/linux/config.frag 20 Oct 2004 16:44:23 -0000 @@ -4,7 +4,7 @@ # # in ARM gcc characters are by default unsigned # -CFLAGS="$CFLAGS -fsigned-char" +CFLAGS="$CFLAGS -fsigned-char -fno-omit-frame-pointer" # if we use cross environment, following values may not be detected. if [ "$cross_compiling" = yes ]; then
_______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
