summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2020-09-28 16:40:50 -0700
committerBrian Behlendorf <[email protected]>2020-10-01 12:22:13 -0700
commit9f29a4d972cf19f74f471a396930de0ae450100a (patch)
tree46a159258b0ac328397f0594f4129d4090aa61d3
parentced5f71eecc3b1443109d5c17c5b0608a7b0ea4d (diff)
Fix objtool configure check
The m4 objtool configure check can incorrectly fail because of a missing header in the test. This appears to be the result of a recent kernel change and was observed on the Fedora 5.8.11-200 kernel. In file included from /home/fedora/zfs/build/objtool/objtool.c:75: ./arch/x86/include/asm/frame.h:100:57: error: 'struct pt_regs' declared inside parameter list will not be visible outside of this definition or declaration [-Werror] The consequence of this is that the "stack_frame_non_standard" check is never run and HAVE_STACK_FRAME_NON_STANDARD is set incorrectly which results in a build failure. This change adds the appropriate header to the "objtool" check so it now behaves as intended. Reviewed-by: Kjeld Schouten <[email protected]> Reviewed-by: Tony Hutter <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #10990
-rw-r--r--config/kernel-objtool.m45
-rw-r--r--include/sys/frame.h3
2 files changed, 5 insertions, 3 deletions
diff --git a/config/kernel-objtool.m4 b/config/kernel-objtool.m4
index bf60e7869..c560c4195 100644
--- a/config/kernel-objtool.m4
+++ b/config/kernel-objtool.m4
@@ -6,10 +6,11 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [
dnl # 4.6 API for compile-time stack validation
ZFS_LINUX_TEST_SRC([objtool], [
#undef __ASSEMBLY__
+ #include <asm/ptrace.h>
#include <asm/frame.h>
],[
#if !defined(FRAME_BEGIN)
- CTASSERT(1);
+ #error "FRAME_BEGIN is not defined"
#endif
])
@@ -18,7 +19,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [
#include <linux/frame.h>
],[
#if !defined(STACK_FRAME_NON_STANDARD)
- CTASSERT(1);
+ #error "STACK_FRAME_NON_STANDARD is not defined."
#endif
])
])
diff --git a/include/sys/frame.h b/include/sys/frame.h
index 2865dbb57..b6bbaa79b 100644
--- a/include/sys/frame.h
+++ b/include/sys/frame.h
@@ -23,7 +23,8 @@
extern "C" {
#endif
-#if defined(__KERNEL__) && defined(HAVE_STACK_FRAME_NON_STANDARD)
+#if defined(__KERNEL__) && defined(HAVE_KERNEL_OBJTOOL) && \
+ defined(HAVE_STACK_FRAME_NON_STANDARD)
#include <linux/frame.h>
#else
#define STACK_FRAME_NON_STANDARD(func)