------- You are receiving this mail because: -------
You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1430
--- Comment #16 from Zoltan Herczeg <hzmester@???> 2014-01-16 13:04:26 ---
I think the compiler 8.31 is way too old.
The good news is, that the JIT code clearly makes sense now, so the
instructions are in little endian mode!
The segmentation fault happens after the code returns from JIT:
addi r1,r1,144
ld r0,8(r1)
[...]
mtlr r0
blr
This is clearly a bad returning address, as you noticed: 0x101db8bc
Maybe another ABI change is the culprit :(
When the JIT code enters, there must be an "st r0, 8(r1)" soon, which should
save the return address. Could you check that r0 is valid when this store
happens? (x $r0). I suspect this value is overwritten, because it overlaps with
the local_space (Could you print out the start address of the local_space just
before the JIT code is executed "p local_space"). The old ABI used a stack
chain, and the return address must be stored in the stack space of the caller
function. Maybe this is not true anymore. Could you check what
jit_machine_stack_exec does with the return address (disassembling the whole
function)?
--
Configure bugmail:
http://bugs.exim.org/userprefs.cgi?tab=email