]> 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:13:34 +0000 (21:13 -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 f891914ed9963e1d3a14fe98176a2b29943070a6..034ace014a4aeef8c10ff108c05d98c6b2fbca96 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 f9fb92f31c125aeeaf3ff1c7d8d313d11f8327e7..3eec284dc1364671569cc79f535758c4dcd2b02a 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 01cf8daf4385927deea726ee25e4d3eba1899ebb..ab276f7a95794217fe30497cfd25104477082fb2 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