commit 359657596ed78e6eee7c1b02df89ac03811c8214 from: shrub date: Tue Mar 31 12:53:05 2026 UTC stub 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 ++ 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", ++ (void *)__register_frame); ++ lpjit_define_process_symbol(J, *JD, "__deregister_