mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	LLVMJIT: Adapt to API changes in gdb and perf support.
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.
This commit is contained in:
		
							parent
							
								
									a38b833a7c
								
							
						
					
					
						commit
						e9a9843e13
					
				| @ -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 | ||||
|  | ||||
							
								
								
									
										45
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @ -5007,28 +5007,6 @@ 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> | ||||
| " | ||||
| if test "x$ac_cv_have_decl_LLVMOrcRegisterGDB" = xyes; then : | ||||
|   ac_have_decl=1 | ||||
| else | ||||
|   ac_have_decl=0 | ||||
| fi | ||||
| 
 | ||||
| cat >>confdefs.h <<_ACEOF | ||||
| #define HAVE_DECL_LLVMORCREGISTERGDB $ac_have_decl | ||||
| _ACEOF | ||||
| ac_fn_c_check_decl "$LINENO" "LLVMOrcRegisterPerf" "ac_cv_have_decl_LLVMOrcRegisterPerf" "#include <llvm-c/OrcBindings.h> | ||||
| " | ||||
| if test "x$ac_cv_have_decl_LLVMOrcRegisterPerf" = xyes; then : | ||||
|   ac_have_decl=1 | ||||
| else | ||||
|   ac_have_decl=0 | ||||
| fi | ||||
| 
 | ||||
| cat >>confdefs.h <<_ACEOF | ||||
| #define HAVE_DECL_LLVMORCREGISTERPERF $ac_have_decl | ||||
| _ACEOF | ||||
| 
 | ||||
|   ac_fn_c_check_decl "$LINENO" "LLVMGetHostCPUName" "ac_cv_have_decl_LLVMGetHostCPUName" "#include <llvm-c/TargetMachine.h> | ||||
| @ -5041,6 +5019,29 @@ fi | ||||
| 
 | ||||
| cat >>confdefs.h <<_ACEOF | ||||
| #define HAVE_DECL_LLVMGETHOSTCPUNAME $ac_have_decl | ||||
| _ACEOF | ||||
| 
 | ||||
|   ac_fn_c_check_decl "$LINENO" "LLVMCreateGDBRegistrationListener" "ac_cv_have_decl_LLVMCreateGDBRegistrationListener" "#include <llvm-c/ExecutionEngine.h> | ||||
| " | ||||
| 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_LLVMCREATEGDBREGISTRATIONLISTENER $ac_have_decl | ||||
| _ACEOF | ||||
| ac_fn_c_check_decl "$LINENO" "LLVMCreatePerfJITEventListener" "ac_cv_have_decl_LLVMCreatePerfJITEventListener" "#include <llvm-c/ExecutionEngine.h> | ||||
| " | ||||
| 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_LLVMCREATEPERFJITEVENTLISTENER $ac_have_decl | ||||
| _ACEOF | ||||
| 
 | ||||
|   CPPFLAGS="$SAVE_CPPFLAGS" | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
|  | ||||
| @ -134,6 +134,14 @@ | ||||
|    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 | ||||
| @ -142,14 +150,6 @@ | ||||
|    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 | ||||
|  | ||||
| @ -107,6 +107,14 @@ | ||||
|    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 | ||||
| @ -115,14 +123,6 @@ | ||||
|    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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user