some LLVM function checks missing in meson
I have been checking the pg_config.h generated by configure and meson to
see if there is anything materially different. I found that
HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER and
HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
are missing on the meson side.
Something like the below would appear to fix that:
diff --git a/meson.build b/meson.build
index 43fad5323c0..cdfd31377d1 100644
--- a/meson.build
+++ b/meson.build
@@ -2301,6 +2301,14 @@ decl_checks += [
['pwritev', 'sys/uio.h'],
]
+# Check presence of some optional LLVM functions.
+if llvm.found()
+ decl_checks += [
+ ['LLVMCreateGDBRegistrationListener', 'llvm-c/ExecutionEngine.h'],
+ ['LLVMCreatePerfJITEventListener', 'llvm-c/ExecutionEngine.h'],
+ ]
+endif
+
foreach c : decl_checks
func = c.get(0)
header = c.get(1)
I don't know what these functions do, but the symbols are used in the
source code. Thoughts?
On 11/04/2024 18:26, Peter Eisentraut wrote:
I have been checking the pg_config.h generated by configure and meson to
see if there is anything materially different. I found thatHAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER and
HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENERare missing on the meson side.
Something like the below would appear to fix that:
diff --git a/meson.build b/meson.build index 43fad5323c0..cdfd31377d1 100644 --- a/meson.build +++ b/meson.build @@ -2301,6 +2301,14 @@ decl_checks += [ ['pwritev', 'sys/uio.h'], ]+# Check presence of some optional LLVM functions. +if llvm.found() + decl_checks += [ + ['LLVMCreateGDBRegistrationListener', 'llvm-c/ExecutionEngine.h'], + ['LLVMCreatePerfJITEventListener', 'llvm-c/ExecutionEngine.h'], + ] +endif + foreach c : decl_checks func = c.get(0) header = c.get(1)I don't know what these functions do, but the symbols are used in the
source code. Thoughts?
+1. I also don't know what they do, but clearly the configure and meson
checks should be in sync.
There's also this in llvmjit.c:
if (llvm_opt3_orc)
{
#if defined(HAVE_DECL_LLVMORCREGISTERPERF) && HAVE_DECL_LLVMORCREGISTERPERF
if (jit_profiling_support)
LLVMOrcUnregisterPerf(llvm_opt3_orc);
#endif
LLVMOrcDisposeInstance(llvm_opt3_orc);
llvm_opt3_orc = NULL;
}if (llvm_opt0_orc)
{
#if defined(HAVE_DECL_LLVMORCREGISTERPERF) && HAVE_DECL_LLVMORCREGISTERPERF
if (jit_profiling_support)
LLVMOrcUnregisterPerf(llvm_opt0_orc);
#endif
LLVMOrcDisposeInstance(llvm_opt0_orc);
llvm_opt0_orc = NULL;
}
}
The autoconf test that set HAVE_DECL_LLVMORCREGISTERPERF was removed in
commit e9a9843e13. I believe that's a leftover that should also have
been removed.
--
Heikki Linnakangas
Neon (https://neon.tech)
On 13.04.24 10:25, Heikki Linnakangas wrote:
There's also this in llvmjit.c:
if (llvm_opt3_orc)
{
#if defined(HAVE_DECL_LLVMORCREGISTERPERF) &&
HAVE_DECL_LLVMORCREGISTERPERF
if (jit_profiling_support)
LLVMOrcUnregisterPerf(llvm_opt3_orc);
#endif
LLVMOrcDisposeInstance(llvm_opt3_orc);
llvm_opt3_orc = NULL;
}if (llvm_opt0_orc)
{
#if defined(HAVE_DECL_LLVMORCREGISTERPERF) &&
HAVE_DECL_LLVMORCREGISTERPERF
if (jit_profiling_support)
LLVMOrcUnregisterPerf(llvm_opt0_orc);
#endif
LLVMOrcDisposeInstance(llvm_opt0_orc);
llvm_opt0_orc = NULL;
}
}The autoconf test that set HAVE_DECL_LLVMORCREGISTERPERF was removed in
commit e9a9843e13. I believe that's a leftover that should also have
been removed.
Right, that was clearly forgotten. I have removed the dead code.
On 13.04.24 10:25, Heikki Linnakangas wrote:
Something like the below would appear to fix that:
diff --git a/meson.build b/meson.build index 43fad5323c0..cdfd31377d1 100644 --- a/meson.build +++ b/meson.build @@ -2301,6 +2301,14 @@ decl_checks += [ ['pwritev', 'sys/uio.h'], ]+# Check presence of some optional LLVM functions. +if llvm.found() + decl_checks += [ + ['LLVMCreateGDBRegistrationListener', 'llvm-c/ExecutionEngine.h'], + ['LLVMCreatePerfJITEventListener', 'llvm-c/ExecutionEngine.h'], + ] +endif + foreach c : decl_checks func = c.get(0) header = c.get(1)I don't know what these functions do, but the symbols are used in the
source code. Thoughts?+1. I also don't know what they do, but clearly the configure and meson
checks should be in sync.
Committed that, too.