commit - 470381d40e6804b9c5de13556c9e60a6b9685a89
commit + 359657596ed78e6eee7c1b02df89ac03811c8214
blob - 1583df7c5ad89ffbbc1674d99a20661f1f47555e
blob + 65aa6efcf701b32e4645c252b65a54f279aa4848
--- lib/mesa/0001-static-lavapipe.patch
+++ lib/mesa/0001-static-lavapipe.patch
# 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);
}
+ 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
++ map[J.mangleAndIntern(name)] = JITEvaluatedSymbol::fromPointer(addr);
++#endif
++ llvm::cantFail(JD.define(llvm::orc::absoluteSymbols(map)));
++}
++
++static void
++lpjit_define_static_process_symbols(llvm::orc::LLJIT &J)
++{
++ auto JD = J.getProcessSymbolsJITDylib();
++ if (!JD)
++ return;
++
++ lpjit_define_process_symbol(J, *JD, "__register_frame",
++