]> granicus.if.org Git - postgresql/commitdiff
LLVMJIT: Adapt to API changes in gdb and perf support.
authorAndres Freund <andres@anarazel.de>
Mon, 23 Jul 2018 04:13:20 +0000 (21:13 -0700)
committerAndres Freund <andres@anarazel.de>
Mon, 23 Jul 2018 04:16:00 +0000 (21:16 -0700)
During the work of upstreaming my previous patches for gdb and perf
support the API changed. Adapt.  Normally this wouldn't necessarily be
something to backpatch, but the previous API wasn't upstream, and at
least the gdb support is quite useful for debugging.

Author: Andres Freund
Backpatch: 11, where LLVM based JIT support was added.

config/llvm.m4
configure
src/backend/jit/llvm/llvmjit.c
src/include/pg_config.h.in
src/include/pg_config.h.win32

index e25ffec661b16699c42e022da458eea7be3d4d06..09ff6812280bedab419daee93d74ebab3b6bf322 100644 (file)
@@ -94,8 +94,9 @@ AC_DEFUN([PGAC_LLVM_SUPPORT],
   # Check which functionality is present
   SAVE_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $LLVM_CPPFLAGS"
-  AC_CHECK_DECLS([LLVMOrcGetSymbolAddressIn, LLVMOrcRegisterGDB, LLVMOrcRegisterPerf], [], [], [[#include <llvm-c/OrcBindings.h>]])
+  AC_CHECK_DECLS([LLVMOrcGetSymbolAddressIn], [], [], [[#include <llvm-c/OrcBindings.h>]])
   AC_CHECK_DECLS([LLVMGetHostCPUName], [], [], [[#include <llvm-c/TargetMachine.h>]])
+  AC_CHECK_DECLS([LLVMCreateGDBRegistrationListener, LLVMCreatePerfJITEventListener], [], [], [[#include <llvm-c/ExecutionEngine.h>]])
   CPPFLAGS="$SAVE_CPPFLAGS"
 
   # LLVM_CONFIG, CLANG are already output via AC_ARG_VAR
index 7ab3edcae5614b3459d46facb9c2eb1445ddb1e6..cb8d9b391fb22eee022cf60042147046b373f82d 100755 (executable)
--- a/configure
+++ b/configure
@@ -5008,39 +5008,40 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LLVMOrcRegisterGDB" "ac_cv_have_decl_LLVMOrcRegisterGDB" "#include <llvm-c/OrcBindings.h>
+
+  ac_fn_c_check_decl "$LINENO" "LLVMGetHostCPUName" "ac_cv_have_decl_LLVMGetHostCPUName" "#include <llvm-c/TargetMachine.h>
 "
-if test "x$ac_cv_have_decl_LLVMOrcRegisterGDB" = xyes; then :
+if test "x$ac_cv_have_decl_LLVMGetHostCPUName" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LLVMORCREGISTERGDB $ac_have_decl
+#define HAVE_DECL_LLVMGETHOSTCPUNAME $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LLVMOrcRegisterPerf" "ac_cv_have_decl_LLVMOrcRegisterPerf" "#include <llvm-c/OrcBindings.h>
+
+  ac_fn_c_check_decl "$LINENO" "LLVMCreateGDBRegistrationListener" "ac_cv_have_decl_LLVMCreateGDBRegistrationListener" "#include <llvm-c/ExecutionEngine.h>
 "
-if test "x$ac_cv_have_decl_LLVMOrcRegisterPerf" = xyes; then :
+if test "x$ac_cv_have_decl_LLVMCreateGDBRegistrationListener" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LLVMORCREGISTERPERF $ac_have_decl
+#define HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER $ac_have_decl
 _ACEOF
-
-  ac_fn_c_check_decl "$LINENO" "LLVMGetHostCPUName" "ac_cv_have_decl_LLVMGetHostCPUName" "#include <llvm-c/TargetMachine.h>
+ac_fn_c_check_decl "$LINENO" "LLVMCreatePerfJITEventListener" "ac_cv_have_decl_LLVMCreatePerfJITEventListener" "#include <llvm-c/ExecutionEngine.h>
 "
-if test "x$ac_cv_have_decl_LLVMGetHostCPUName" = xyes; then :
+if test "x$ac_cv_have_decl_LLVMCreatePerfJITEventListener" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LLVMGETHOSTCPUNAME $ac_have_decl
+#define HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER $ac_have_decl
 _ACEOF
 
   CPPFLAGS="$SAVE_CPPFLAGS"
index 955c96671399f6d2f5b975946de0a6c772e4f87b..640c27fc4088ce69577a0142072f0095b4a76ba8 100644 (file)
@@ -28,6 +28,7 @@
 #include <llvm-c/BitReader.h>
 #include <llvm-c/BitWriter.h>
 #include <llvm-c/Core.h>
+#include <llvm-c/ExecutionEngine.h>
 #include <llvm-c/OrcBindings.h>
 #include <llvm-c/Support.h>
 #include <llvm-c/Target.h>
@@ -666,18 +667,22 @@ llvm_session_initialize(void)
        llvm_opt0_orc = LLVMOrcCreateInstance(llvm_opt0_targetmachine);
        llvm_opt3_orc = LLVMOrcCreateInstance(llvm_opt3_targetmachine);
 
-#if defined(HAVE_DECL_LLVMORCREGISTERGDB) && HAVE_DECL_LLVMORCREGISTERGDB
+#if defined(HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER) && HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER
        if (jit_debugging_support)
        {
-               LLVMOrcRegisterGDB(llvm_opt0_orc);
-               LLVMOrcRegisterGDB(llvm_opt3_orc);
+               LLVMJITEventListenerRef l = LLVMCreateGDBRegistrationListener();
+
+               LLVMOrcRegisterJITEventListener(llvm_opt0_orc, l);
+               LLVMOrcRegisterJITEventListener(llvm_opt3_orc, l);
        }
 #endif
-#if defined(HAVE_DECL_LLVMORCREGISTERPERF) && HAVE_DECL_LLVMORCREGISTERPERF
+#if defined(HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER) && HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
        if (jit_profiling_support)
        {
-               LLVMOrcRegisterPerf(llvm_opt0_orc);
-               LLVMOrcRegisterPerf(llvm_opt3_orc);
+               LLVMJITEventListenerRef l = LLVMCreatePerfJITEventListener();
+
+               LLVMOrcRegisterJITEventListener(llvm_opt0_orc, l);
+               LLVMOrcRegisterJITEventListener(llvm_opt3_orc, l);
        }
 #endif
 
index dcb25bb7234d6de4136ddc99ba261da2c9662d9f..32535fb54cbfa192714e9d994f038715c1d48457 100644 (file)
    don't. */
 #undef HAVE_DECL_F_FULLFSYNC
 
+/* Define to 1 if you have the declaration of
+   `LLVMCreateGDBRegistrationListener', and to 0 if you don't. */
+#undef HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER
+
+/* Define to 1 if you have the declaration of
+   `LLVMCreatePerfJITEventListener', and to 0 if you don't. */
+#undef HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
+
 /* Define to 1 if you have the declaration of `LLVMGetHostCPUName', and to 0
    if you don't. */
 #undef HAVE_DECL_LLVMGETHOSTCPUNAME
    to 0 if you don't. */
 #undef HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN
 
-/* Define to 1 if you have the declaration of `LLVMOrcRegisterGDB', and to 0
-   if you don't. */
-#undef HAVE_DECL_LLVMORCREGISTERGDB
-
-/* Define to 1 if you have the declaration of `LLVMOrcRegisterPerf', and to 0
-   if you don't. */
-#undef HAVE_DECL_LLVMORCREGISTERPERF
-
 /* Define to 1 if you have the declaration of `posix_fadvise', and to 0 if you
    don't. */
 #undef HAVE_DECL_POSIX_FADVISE
index 212e7739cdb6ec87148a101750461236386efb39..8244d8d3e507d79583b385702b06b64d4cdfe13f 100644 (file)
    don't. */
 #define HAVE_DECL_F_FULLFSYNC 0
 
+/* Define to 1 if you have the declaration of
+   `LLVMCreateGDBRegistrationListener', and to 0 if you don't. */
+#undef HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER
+
+/* Define to 1 if you have the declaration of
+   `LLVMCreatePerfJITEventListener', and to 0 if you don't. */
+#undef HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
+
 /* Define to 1 if you have the declaration of `LLVMGetHostCPUName', and to 0
    if you don't. */
 #define HAVE_DECL_LLVMGETHOSTCPUNAME 0
    to 0 if you don't. */
 #define HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN 0
 
-/* Define to 1 if you have the declaration of `LLVMOrcRegisterGDB', and to 0
-   if you don't. */
-#define HAVE_DECL_LLVMORCREGISTERGDB 0
-
-/* Define to 1 if you have the declaration of `LLVMOrcRegisterPerf', and to 0
-   if you don't. */
-#define HAVE_DECL_LLVMORCREGISTERPERF 0
-
 /* Define to 1 if you have the declaration of `snprintf', and to 0 if you
    don't. */
 #define HAVE_DECL_SNPRINTF 1