mirror of
https://git.freebsd.org/ports.git
synced 2025-06-01 02:46:27 -04:00
Patch to mitigate a crash with LLVM JIT
PR: 251192 (Submitted by Dmitry Marakasov)
This commit is contained in:
parent
5aa030b372
commit
3b1693bb3e
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=558181
2 changed files with 25 additions and 1 deletions
|
@ -5,7 +5,7 @@ PORTNAME?= postgresql
|
||||||
DISTVERSION?= 13.1
|
DISTVERSION?= 13.1
|
||||||
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
|
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
|
||||||
# not their own. Probably best to keep it at ?=0 when reset here too.
|
# not their own. Probably best to keep it at ?=0 when reset here too.
|
||||||
PORTREVISION?= 0
|
PORTREVISION?= 1
|
||||||
CATEGORIES?= databases
|
CATEGORIES?= databases
|
||||||
MASTER_SITES= PGSQL/source/v${DISTVERSION}
|
MASTER_SITES= PGSQL/source/v${DISTVERSION}
|
||||||
PKGNAMESUFFIX?= ${PORTVERSION:R}${COMPONENT}
|
PKGNAMESUFFIX?= ${PORTVERSION:R}${COMPONENT}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
Do not inline functions which access TLS in LLVM JIT, as
|
||||||
|
this leads to crashes with unsupported relocation error
|
||||||
|
|
||||||
|
diff --git src/backend/jit/llvm/llvmjit_inline.cpp src/backend/jit/llvm/llvmjit_inline.cpp
|
||||||
|
index 2617a46..a063edb 100644
|
||||||
|
--- src/backend/jit/llvm/llvmjit_inline.cpp
|
||||||
|
+++ src/backend/jit/llvm/llvmjit_inline.cpp
|
||||||
|
@@ -608,6 +608,16 @@ function_inlinable(llvm::Function &F,
|
||||||
|
if (rv->materialize())
|
||||||
|
elog(FATAL, "failed to materialize metadata");
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Don't inline functions with thread-local variables until
|
||||||
|
+ * related crashes are investigated (see BUG #16696)
|
||||||
|
+ */
|
||||||
|
+ if (rv->isThreadLocal()) {
|
||||||
|
+ ilog(DEBUG1, "cannot inline %s due to thread-local variable %s",
|
||||||
|
+ F.getName().data(), rv->getName().data());
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Never want to inline externally visible vars, cheap enough to
|
||||||
|
* reference.
|
Loading…
Add table
Reference in a new issue