diff options
author | Brian Behlendorf <[email protected]> | 2020-11-02 21:39:50 +0000 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-11-02 22:01:10 +0000 |
commit | 8c7d604c62bf621c11faf3abe64cfa94bd12b45b (patch) | |
tree | 80fd75ad52b525a44b7030572b9d287bb0b6da3b | |
parent | 7eefaf0ca04734a6eed399ed684465ddf31179f4 (diff) |
Linux 5.10 compat: frame.h renamed objtool.h
In Linux 5.10 the linux/frame.h header was renamed linux/objtool.h.
Add a configure check to detect and use the correctly named header.
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #11085
-rw-r--r-- | config/kernel-objtool.m4 | 25 | ||||
-rw-r--r-- | config/kernel.m4 | 1 | ||||
-rw-r--r-- | include/sys/frame.h | 4 |
3 files changed, 30 insertions, 0 deletions
diff --git a/config/kernel-objtool.m4 b/config/kernel-objtool.m4 index c560c4195..f9f9d657d 100644 --- a/config/kernel-objtool.m4 +++ b/config/kernel-objtool.m4 @@ -1,4 +1,25 @@ dnl # +dnl # Detect objtool functionality. +dnl # + +dnl # +dnl # Kernel 5.10: linux/frame.h was renamed linux/objtool.h +dnl # +AC_DEFUN([ZFS_AC_KERNEL_OBJTOOL_HEADER], [ + AC_MSG_CHECKING([whether objtool header is available]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/objtool.h> + ],[ + ],[ + AC_DEFINE(HAVE_KERNEL_OBJTOOL_HEADER, 1, + [kernel has linux/objtool.h]) + AC_MSG_RESULT(linux/objtool.h) + ],[ + AC_MSG_RESULT(linux/frame.h) + ]) +]) + +dnl # dnl # Check for objtool support. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [ @@ -16,7 +37,11 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [ dnl # 4.6 API added STACK_FRAME_NON_STANDARD macro ZFS_LINUX_TEST_SRC([stack_frame_non_standard], [ + #ifdef HAVE_KERNEL_OBJTOOL_HEADER + #include <linux/objtool.h> + #else #include <linux/frame.h> + #endif ],[ #if !defined(STACK_FRAME_NON_STANDARD) #error "STACK_FRAME_NON_STANDARD is not defined." diff --git a/config/kernel.m4 b/config/kernel.m4 index ec52f014a..bbfbeb39b 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -13,6 +13,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ dnl # Sequential ZFS_LINUX_TRY_COMPILE tests ZFS_AC_KERNEL_FPU_HEADER + ZFS_AC_KERNEL_OBJTOOL_HEADER ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T ZFS_AC_KERNEL_MISC_MINOR ZFS_AC_KERNEL_DECLARE_EVENT_CLASS diff --git a/include/sys/frame.h b/include/sys/frame.h index b6bbaa79b..caae85142 100644 --- a/include/sys/frame.h +++ b/include/sys/frame.h @@ -25,7 +25,11 @@ extern "C" { #if defined(__KERNEL__) && defined(HAVE_KERNEL_OBJTOOL) && \ defined(HAVE_STACK_FRAME_NON_STANDARD) +#if defined(HAVE_KERNEL_OBJTOOL_HEADER) +#include <linux/objtool.h> +#else #include <linux/frame.h> +#endif #else #define STACK_FRAME_NON_STANDARD(func) #endif |