]) # LIBCFS_CRYPTO_HASH_HELPERS
#
+# LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT
+#
+# linux 4.6 kernel changed stacktrace_ops address to return an int
+#
+AC_DEFUN([LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT], [
+LB_CHECK_COMPILE([if 'struct stacktrace_ops' address function returns an int],
+stacktrace_ops_address_return_int, [
+ #include <asm/stacktrace.h>
+],[
+ int rc;
+
+ rc = ((struct stacktrace_ops *)0)->address(NULL, 0, 0);
+],[
+ AC_DEFINE(STACKTRACE_OPS_ADDRESS_RETURN_INT, 1,
+ ['struct stacktrace_ops' address function returns an int])
+])
+]) # LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT
+
+#
# LIBCFS_PROG_LINUX
#
# LibCFS linux kernel checks
LIBCFS_FPU_API
# 4.5
LIBCFS_CRYPTO_HASH_HELPERS
+# 4.6
+LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT
]) # LIBCFS_PROG_LINUX
#
return 0;
}
-static void print_trace_address(void *data, unsigned long addr, int reliable)
+#ifdef STACKTRACE_OPS_ADDRESS_RETURN_INT
+static int
+#else
+static void
+#endif
+print_trace_address(void *data, unsigned long addr, int reliable)
{
char fmt[32];
touch_nmi_watchdog();
sprintf(fmt, " [<%016lx>] %s%%s\n", addr, reliable ? "": "? ");
__print_symbol(fmt, addr);
+#ifdef STACKTRACE_OPS_ADDRESS_RETURN_INT
+ return 0;
+#endif
}
static const struct stacktrace_ops print_trace_ops = {