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