Joshua Gatcomb <[EMAIL PROTECTED]> wrote:

> parrot trans_9.pasm
> ok 1
> ok 2
> parrot -j trans_9.pasm
> ok 1
> not ok 2

[ ... ]

> (gdb) add-symbol-file arithmetics_26.o 0
> add symbol table from file "arithmetics_26.o" at
>         .text_addr = 0x0
> (y or n) y
> Reading symbols from arithmetics_26.o...done.
> (gdb) s
> jit_func () at arithmetics_26.pasm:1
> 1               set I0, 130

Good. So you can step through the JIT code.

Now comes the easy thing: find out, why the results differ:

- run the test through the plain core and trace it:
$ parrot -t t/op/trans_9.pasm
...
    50 cosh N2, I1      - N2=1.543081, I1=1

- run it through JIT debugging:
 ...
 # after the 2nd cosh
 #
 (gdb) p N2
 $1 = 1.5430806348152437
 (gdb) p I1
 $2 = 1

You can turn on the register window of ddd too (or type "info float" and
"info registers" in gdb). Something must happen here that gives
differing results and segfaults.

leo

Reply via email to