On Wed, 2012-07-04 at 05:33 -0700, Jose Fonseca wrote: > ----- Original Message ----- > > On Tue, 2012-07-03 at 16:07 -0500, Will Schmidt wrote: > > > (gdb) info reg r3 > > > r3 0xfffb7f60010 17590977429520 > > > (gdb) info reg r10 > > > r10 0x7c0802a6f8010010 8937396376665391120 > > > > BenH points out to me that r10 value looks like code. > > ppcdis 0x7c0802a6 > > mflr r0 > > > > ppcdis 0xf8010010 > > std r0,16(r1) > > > > So we are getting a pointer to the actual code, rather than a OPD > > (function descriptor). > > > > I'll dig into this more... > > > > Thanks, > > -Will > > I'm not familair with PowerPc architecture. > > Does llvm/examples/HowToUseJIT/HowToUseJIT.cpp work well there? > > If so then you can take a look at lib/ExecutionEngine/JIT/JIT.cpp 's > JIT::runFunction method, and compare what's happening differently. >
Thanks for the pointer. It took me a bit to get the example built, but in the end, the behavior appears to be the same. Single-stepping in GDB shows the steps leading up to the SIGSEGV are the same. The value moved into the CTR that we branch to is code rather than OPD. > g++ `llvm-config --ldflags` -o HowToUseJIT HowToUseJIT.o `llvm-config --libs` [willschm@fuzzy Release]$ ./HowToUseJIT We just constructed this LLVM module: ; ModuleID = 'test' <snip...> Running foo: Segmentation fault [willschm@fuzzy Release]$ gdb ./HowToUseJIT <snip...> Breakpoint 2, 0x00000000100313c0 in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313c0 <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4032>: e9 3e 00 00 ld r9,0(r30) (gdb) stepi 0x00000000100313c4 in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313c4 <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4036>: f8 41 00 28 std r2,40(r1) (gdb) 0x00000000100313c8 in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313c8 <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4040>: 7d 29 03 a6 mtctr r9 (gdb) 0x00000000100313cc in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313cc <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4044>: e9 7e 00 10 ld r11,16(r30) (gdb) 0x00000000100313d0 in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313d0 <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4048>: e8 5e 00 08 ld r2,8(r30) (gdb) 0x00000000100313d4 in ._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE () => 0x00000000100313d4 <._ZN4llvm3JIT11runFunctionEPNS_8FunctionERKSt6vectorINS_12GenericValueESaIS4_EE+4052>: 4e 80 04 21 bctrl (gdb) 0x7c0802a6f8010010 in ?? () => 0x7c0802a6f8010010: Cannot access memory at address 0x7c0802a6f8010010 Thanks, -Will _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev