Skip to content

Commit 9b4e4cf

Browse files
committed
Prepare for forthcoming LLVM 13 API change.
LLVM 13 (due out in September) has changed the semantics of LLVMOrcAbsoluteSymbols(), so we need to bump some reference counts to avoid a double-free that causes crashes and bad query results. A proactive change seems necessary to avoid having a window of time where our respective latest releases would interact badly. It's possible that the situation could change before then, though. Thanks to Fabien Coelho for monitoring bleeding edge LLVM and Andres Freund for tracking down the change. Back-patch to 11, where the JIT code arrived. Discussion: https://postgr.es/m/CA%2BhUKGLEy8mgtN7BNp0ooFAjUedDTJj5dME7NxLU-m91b85siA%40mail.gmail.com
1 parent c13585f commit 9b4e4cf

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/backend/jit/llvm/llvmjit.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,9 @@ llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
11061106
{
11071107
const char *name = LLVMOrcSymbolStringPoolEntryStr(LookupSet[i].Name);
11081108

1109+
#if LLVM_VERSION_MAJOR > 12
1110+
LLVMOrcRetainSymbolStringPoolEntry(LookupSet[i].Name);
1111+
#endif
11091112
symbols[i].Name = LookupSet[i].Name;
11101113
symbols[i].Sym.Address = llvm_resolve_symbol(name, NULL);
11111114
symbols[i].Sym.Flags.GenericFlags = LLVMJITSymbolGenericFlagsExported;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy