Hi,

  I just switched development of my language, and its jit generation
based on gnu lightning on a x86_64 computer, and this happens
when running jit generated code under valgrind.

(other valgrind messages about bug report, etc)
==16208== Process terminating with default action of signal 4 (SIGILL)
==16208==  Illegal opcode at address 0x9F14FD8
==16208==    at 0x9F14FD8: ???
==16208==
==16208== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- y

(gdb) x/20i 0x0000000009f14fd8-20
   0x9f14fc4:   xor    %rax,%rax
   0x9f14fc7:   rex.WB callq *%r13
   0x9f14fca:   nopw   0x0(%rax,%rax,1)
   0x9f14fd0:   mov    0x20(%rbx),%r10
   0x9f14fd4:   mov    -0x28(%r10),%r10
=> 0x9f14fd8:   movslq 0x24(%r10),%r13d
   0x9f14fdc:   mov    0x28(%rbx),%r10
   0x9f14fe0:   lea    0x18(%r10),%rax
   0x9f14fe4:   mov    %rax,0x28(%rbx)
   0x9f14fe8:   movabs $0x1,%rax
   0x9f14ff2:   mov    %eax,(%r10)
   0x9f14ff5:   mov    %r13,0x8(%r10)

(gdb) x/4x 0x9f14fd8
0x9f14fd8:      0x45    0x63    0x6a    0x24
(gdb) x/4t 0x9f14fd8
0x9f14fd8:      01000101        01100011        01101010        00100100

$ rpm -q valgrind
valgrind-3.6.1-1-mdv2011.0.x86_64


  Sorry if this is an error in the code generation, but since it
works, load and sign extends a 32 bit integer from memory to a
64 bit register, I believe it should be correct to some extent...

  In case it is useful, sources can be browsed at
https://code.google.com/p/exl/source/browse/ and/or
https://code.google.com/p/exl/source/browse/trunk/lib/ejit_x86-cpu.c

Thanks,
Paulo


------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to