Commit Diff


commit - 470381d40e6804b9c5de13556c9e60a6b9685a89
commit + 359657596ed78e6eee7c1b02df89ac03811c8214
blob - 1583df7c5ad89ffbbc1674d99a20661f1f47555e
blob + 65aa6efcf701b32e4645c252b65a54f279aa4848
--- lib/mesa/0001-static-lavapipe.patch
+++ lib/mesa/0001-static-lavapipe.patch
@@ -49,10 +49,32 @@ index 5eaae97..f9023c9 100644
  
  # Even if we find OpenMP, Gitlab CI fails to link with gcc/i386 and clang/anyarch.
 diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
-index 16357fb..0e1f520 100644
+index 16357fb..a2f9c84 100644
 --- a/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
 +++ b/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
-@@ -320,6 +320,26 @@ LLVMErrorRef module_transform_wrapper(
+@@ -62,6 +62,21 @@
+ #endif
+ /* else use old RTDyldObjectLinkingLayer (RuntimeDyld backend) */
+ 
++extern "C" {
++
++/* just stub everything it wants */
++void __register_frame(const void *) {}
++void __deregister_frame(const void *) {}
++void __register_frame_info(const void *, void *) {}
++void __register_frame_info_bases(const void *, void *, void *, void *) {}
++void __register_frame_info_table(const void *, void *) {}
++void __register_frame_info_table_bases(const void *, void *, void *, void *) {}
++void __register_frame_table(const void *) {}
++void __deregister_frame_info(const void *) {}
++void __deregister_frame_info_bases(const void *) {}
++
++}
++
+ namespace {
+ 
+ class LPObjectCacheORC : public llvm::ObjectCache {
+@@ -320,6 +335,76 @@ LLVMErrorRef module_transform_wrapper(
     return LLVMOrcThreadSafeModuleWithModuleDo(*ModInOut, *module_transform, Ctx);
  }
  
@@ -76,10 +98,60 @@ index 16357fb..0e1f520 100644
 +   return JITDylibSP(&JD);
 +}
 +
++static void
++lpjit_define_process_symbol(llvm::orc::LLJIT &J, llvm::orc::JITDylib &JD,
++                            const char *name, void *addr)
++{
++#if LLVM_VERSION_MAJOR >= 17
++   using llvm::orc::ExecutorAddr;
++   using llvm::orc::ExecutorSymbolDef;
++   using llvm::JITSymbolFlags;
++#else
++   using llvm::JITEvaluatedSymbol;
++#endif
++   using llvm::orc::SymbolMap;
++
++   SymbolMap map(1);
++#if LLVM_VERSION_MAJOR >= 17
++   map[J.mangleAndIntern(name)] =
++      ExecutorSymbolDef(ExecutorAddr::fromPtr(addr), JITSymbolFlags::Exported);
++#else