mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Linux 6.7 compat: detect if kernel defines intptr_t
Since Linux 6.7 the kernel has defined intptr_t. Clang has -Wtypedef-redefinition by default, which causes the build to fail because we also have a typedef for intptr_t. Since its better to use the kernel's if it exists, detect it and skip our own. Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #16201
This commit is contained in:
		
							parent
							
								
									54ef0fdf60
								
							
						
					
					
						commit
						f4e2aed42a
					
				
							
								
								
									
										40
									
								
								config/kernel-types.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								config/kernel-types.m4
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| dnl # | ||||
| dnl # check if kernel provides definitions for given types | ||||
| dnl # | ||||
| 
 | ||||
| dnl _ZFS_AC_KERNEL_SRC_TYPE(type) | ||||
| AC_DEFUN([_ZFS_AC_KERNEL_SRC_TYPE], [ | ||||
| 	ZFS_LINUX_TEST_SRC([type_$1], [ | ||||
| 		#include <linux/types.h> | ||||
| 	],[ | ||||
| 		const $1 __attribute__((unused)) x = ($1) 0; | ||||
| 	]) | ||||
| ]) | ||||
| 
 | ||||
| dnl _ZFS_AC_KERNEL_TYPE(type) | ||||
| AC_DEFUN([_ZFS_AC_KERNEL_TYPE], [ | ||||
| 	AC_MSG_CHECKING([whether kernel defines $1]) | ||||
| 	ZFS_LINUX_TEST_RESULT([type_$1], [ | ||||
| 		AC_MSG_RESULT([yes]) | ||||
| 		AC_DEFINE([HAVE_KERNEL_]m4_quote(m4_translit([$1], [a-z], [A-Z])), | ||||
| 		    1, [kernel defines $1]) | ||||
| 	], [ | ||||
| 		AC_MSG_RESULT([no]) | ||||
| 	]) | ||||
| ]) | ||||
| 
 | ||||
| dnl ZFS_AC_KERNEL_TYPES([types...]) | ||||
| AC_DEFUN([ZFS_AC_KERNEL_TYPES], [ | ||||
| 	AC_DEFUN([ZFS_AC_KERNEL_SRC_TYPES], [ | ||||
| 		m4_foreach_w([type], [$1], [ | ||||
| 			_ZFS_AC_KERNEL_SRC_TYPE(type) | ||||
| 		]) | ||||
| 	]) | ||||
| 	AC_DEFUN([ZFS_AC_KERNEL_TYPES], [ | ||||
| 		m4_foreach_w([type], [$1], [ | ||||
| 			_ZFS_AC_KERNEL_TYPE(type) | ||||
| 		]) | ||||
| 	]) | ||||
| ]) | ||||
| 
 | ||||
| ZFS_AC_KERNEL_TYPES([intptr_t]) | ||||
| @ -37,6 +37,7 @@ dnl # only once the compilation can be done in parallel significantly | ||||
| dnl # speeding up the process. | ||||
| dnl # | ||||
| AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [ | ||||
| 	ZFS_AC_KERNEL_SRC_TYPES | ||||
| 	ZFS_AC_KERNEL_SRC_OBJTOOL | ||||
| 	ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE | ||||
| 	ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE | ||||
| @ -187,6 +188,7 @@ dnl # | ||||
| dnl # Check results of kernel interface tests. | ||||
| dnl # | ||||
| AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [ | ||||
| 	ZFS_AC_KERNEL_TYPES | ||||
| 	ZFS_AC_KERNEL_ACCESS_OK_TYPE | ||||
| 	ZFS_AC_KERNEL_GLOBAL_PAGE_STATE | ||||
| 	ZFS_AC_KERNEL_OBJTOOL | ||||
|  | ||||
| @ -38,7 +38,9 @@ typedef unsigned long		ulong_t; | ||||
| typedef unsigned long long	u_longlong_t; | ||||
| typedef long long		longlong_t; | ||||
| 
 | ||||
| #ifndef HAVE_KERNEL_INTPTR_T | ||||
| typedef long			intptr_t; | ||||
| #endif | ||||
| typedef unsigned long long	rlim64_t; | ||||
| 
 | ||||
| typedef struct task_struct	kthread_t; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Rob N
						Rob N