On 09/30/2014 02:40 PM, Mathias Fröhlich wrote:

Hi Brian,

On Tuesday, September 30, 2014 13:30:21 Brian Paul wrote:
Move the USE_MCJIT / HAVE_AVX determination logic to lp_bld.h.  If we
don't have MCJIT define a dummy LLVMMCJITMemoryManagerRef type to avoid
excessive #ifdef testing elsewhere.
[...]
@@ -219,7 +188,7 @@ gallivm_free_code(struct gallivm_state *gallivm)
     assert(!gallivm->engine);
     lp_free_generated_code(gallivm->code);
     gallivm->code = NULL;
-#if HAVE_LLVM < 0x0306
+#if USE_MCJIT
We will probably still need the < 0x0306 check:
#if HAVE_LLVM < 0x0306 && USE_MCJIT
since this memorymanager stuff just vanished in the way 3.5 implemented
this with version 3.6.

     LLVMDisposeMCJITMemoryManager(gallivm->memorymgr);
     gallivm->memorymgr = NULL;
  #endif


Also, we will probably fail to compile the LLVMDisposeMCJITMemoryManager
call under some configurations with MCJIT and older llvm.
So, additionally to what you had, how about the attached one?
I am still trying to verify this change against 3.5 and 3.6.
I am not sure about 3.2 since it did not build out of the box with
my configure line.

It compiles, but I get a segfault when I try to run anything:


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff797a579 in DelegatingJITMemoryManager::setMemoryWritable (this=0x6f5cb0) at gallivm/lp_bld_misc.cpp:165
165              mgr()->setMemoryWritable();
(gdb) where
#0 0x00007ffff797a579 in DelegatingJITMemoryManager::setMemoryWritable (this=0x6f5cb0) at gallivm/lp_bld_misc.cpp:165 #1 0x00007ffff51579cc in (anonymous namespace)::JITEmitter::startFunction (this=0x727b20, F=...) at /build/buildd/llvm-3.2-3.2/lib/ExecutionEngine/JIT/JITEmitter.cpp:782 #2 0x00007ffff567e595 in (anonymous namespace)::Emitter<llvm::JITCodeEmitter>::runOnMachineFunction (this=0x75dd50, MF=...) at /build/buildd/llvm-3.2-3.2/lib/Target/X86/X86CodeEmitter.cpp:145 #3 0x00007ffff501bbbf in runOnFunction (F=..., this=0x727980) at /build/buildd/llvm-3.2-3.2/lib/VMCore/PassManager.cpp:1498 #4 llvm::FPPassManager::runOnFunction (this=0x727980, F=...) at /build/buildd/llvm-3.2-3.2/lib/VMCore/PassManager.cpp:1476 #5 0x00007ffff501f2bb in llvm::FunctionPassManagerImpl::run (this=0x6fc950, F=...) at /build/buildd/llvm-3.2-3.2/lib/VMCore/PassManager.cpp:1449 #6 0x00007ffff501f396 in llvm::FunctionPassManager::run (this=0x6f5d20, F=...) at /build/buildd/llvm-3.2-3.2/lib/VMCore/PassManager.cpp:1379 #7 0x00007ffff514e637 in llvm::JIT::jitTheFunction (this=this@entry=0x6fc800, F=F@entry=0x769720, locked=...) at /build/buildd/llvm-3.2-3.2/lib/ExecutionEngine/JIT/JIT.cpp:645 #8 0x00007ffff514ec2f in llvm::JIT::runJITOnFunctionUnlocked (this=this@entry=0x6fc800, F=F@entry=0x769720, locked=...) at /build/buildd/llvm-3.2-3.2/lib/ExecutionEngine/JIT/JIT.cpp:624 #9 0x00007ffff514ed89 in llvm::JIT::getPointerToFunction (this=0x6fc800, F=0x769720) at /build/buildd/llvm-3.2-3.2/lib/ExecutionEngine/JIT/JIT.cpp:681 #10 0x00007ffff7941c04 in gallivm_jit_function (gallivm=0x6f5a90, func=0x769720) at gallivm/lp_bld_init.c:586 #11 0x00007ffff79b54d2 in generate_variant (lp=0x61f750, shader=0x6fdd10, key=0x7fffffffd9a0) at lp_state_fs.c:2634 #12 0x00007ffff79b6a77 in llvmpipe_update_fs (lp=0x61f750) at lp_state_fs.c:3166 #13 0x00007ffff79ac7bb in llvmpipe_update_derived (llvmpipe=0x61f750) at lp_state_derived.c:186 #14 0x00007ffff7984562 in llvmpipe_draw_vbo (pipe=0x61f750, info=0x7fffffffdcc0) at lp_draw_arrays.c:70 #15 0x00007ffff785c1d3 in cso_draw_vbo (cso=0x6b9260, info=0x7fffffffdcc0) at cso_cache/cso_context.c:1418 #16 0x00007ffff771a373 in st_draw_vbo (ctx=0x7ffff7ec4010, prims=0x6ab7c0, nr_prims=2, ib=0x0, index_bounds_valid=1 '\001', min_index=0, max_index=161, tfb_vertcount=0x0, indirect=0x0) at ../../src/mesa/state_tracker/st_draw.c:285 #17 0x00007ffff76f7e3f in vbo_save_playback_vertex_list (ctx=0x7ffff7ec4010, data=0x6ab3ec) at ../../src/mesa/vbo/vbo_save_draw.c:310 #18 0x00007ffff7524e18 in ext_opcode_execute (ctx=0x7ffff7ec4010, node=0x6ab3e8) at ../../src/mesa/main/dlist.c:658 #19 0x00007ffff753b5db in execute_list (ctx=0x7ffff7ec4010, list=1) at ../../src/mesa/main/dlist.c:7692 #20 0x00007ffff7541f2b in _mesa_CallList (list=1) at ../../src/mesa/main/dlist.c:9121
#21 0x0000000000402e2d in draw () at gears.c:196
#22 0x00007ffff6ee1376 in processWindowWorkList (window=0x61b180) at glut_event.c:1307 #23 0x00007ffff6ee232c in __glutProcessWindowWorkLists () at glut_event.c:1358
#24 glutMainLoop () at glut_event.c:1379
#25 0x00000000004036ea in main (argc=1, argv=0x7fffffffe658) at gears.c:405

-Brian

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to