1dnl # 2dnl # Detect objtool functionality. 3dnl # 4 5dnl # 6dnl # Kernel 5.10: linux/frame.h was renamed linux/objtool.h 7dnl # 8AC_DEFUN([ZFS_AC_KERNEL_OBJTOOL_HEADER], [ 9 AC_MSG_CHECKING([whether objtool header is available]) 10 ZFS_LINUX_TRY_COMPILE([ 11 #include <linux/objtool.h> 12 ],[ 13 ],[ 14 AC_DEFINE(HAVE_KERNEL_OBJTOOL_HEADER, 1, 15 [kernel has linux/objtool.h]) 16 AC_MSG_RESULT(linux/objtool.h) 17 ],[ 18 AC_MSG_RESULT(linux/frame.h) 19 ]) 20]) 21 22dnl # 23dnl # Check for objtool support. 24dnl # 25AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [ 26 27 dnl # 4.6 API for compile-time stack validation 28 ZFS_LINUX_TEST_SRC([objtool], [ 29 #undef __ASSEMBLY__ 30 #include <asm/ptrace.h> 31 #include <asm/frame.h> 32 ],[ 33 #if !defined(FRAME_BEGIN) 34 #error "FRAME_BEGIN is not defined" 35 #endif 36 ]) 37 38 dnl # 4.6 API added STACK_FRAME_NON_STANDARD macro 39 ZFS_LINUX_TEST_SRC([stack_frame_non_standard], [ 40 #ifdef HAVE_KERNEL_OBJTOOL_HEADER 41 #include <linux/objtool.h> 42 #else 43 #include <linux/frame.h> 44 #endif 45 ],[ 46 #if !defined(STACK_FRAME_NON_STANDARD) 47 #error "STACK_FRAME_NON_STANDARD is not defined." 48 #endif 49 ]) 50]) 51 52AC_DEFUN([ZFS_AC_KERNEL_OBJTOOL], [ 53 AC_MSG_CHECKING( 54 [whether compile-time stack validation (objtool) is available]) 55 ZFS_LINUX_TEST_RESULT([objtool], [ 56 AC_MSG_RESULT(yes) 57 AC_DEFINE(HAVE_KERNEL_OBJTOOL, 1, 58 [kernel does stack verification]) 59 60 AC_MSG_CHECKING([whether STACK_FRAME_NON_STANDARD is defined]) 61 ZFS_LINUX_TEST_RESULT([stack_frame_non_standard], [ 62 AC_MSG_RESULT(yes) 63 AC_DEFINE(HAVE_STACK_FRAME_NON_STANDARD, 1, 64 [STACK_FRAME_NON_STANDARD is defined]) 65 ],[ 66 AC_MSG_RESULT(no) 67 ]) 68 ],[ 69 AC_MSG_RESULT(no) 70 ]) 71]) 72