diff options
40 files changed, 337 insertions, 222 deletions
diff --git a/cmd/raidz_test/Makefile.am b/cmd/raidz_test/Makefile.am index 02cc746ec..a394a0dde 100644 --- a/cmd/raidz_test/Makefile.am +++ b/cmd/raidz_test/Makefile.am @@ -1,7 +1,10 @@ include $(top_srcdir)/config/Rules.am -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) -AM_CPPFLAGS += -DDEBUG +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) + +# Unconditionally enable ASSERTs +AM_CPPFLAGS += -DDEBUG -UNDEBUG DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/cmd/zdb/Makefile.am b/cmd/zdb/Makefile.am index c1543e86e..70b60bfaf 100644 --- a/cmd/zdb/Makefile.am +++ b/cmd/zdb/Makefile.am @@ -1,6 +1,7 @@ include $(top_srcdir)/config/Rules.am -AM_CPPFLAGS += -DDEBUG +# Unconditionally enable debugging for zdb +AM_CPPFLAGS += -DDEBUG -UNDEBUG DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/cmd/ztest/Makefile.am b/cmd/ztest/Makefile.am index cbfb95fd3..489d8b547 100644 --- a/cmd/ztest/Makefile.am +++ b/cmd/ztest/Makefile.am @@ -1,8 +1,12 @@ include $(top_srcdir)/config/Rules.am -# -Wnoformat-truncation to get rid of compiler warning for unchecked -# truncating snprintfs on gcc 7.1.1. -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(NO_FORMAT_TRUNCATION) +# Get rid of compiler warning for unchecked truncating snprintfs on gcc 7.1.1 +AM_CFLAGS += $(NO_FORMAT_TRUNCATION) + +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) + +# Unconditionally enable ASSERTs AM_CPPFLAGS += -DDEBUG -UNDEBUG DEFAULT_INCLUDES += \ diff --git a/config/Rules.am b/config/Rules.am index 215f09c34..9a9dd452a 100644 --- a/config/Rules.am +++ b/config/Rules.am @@ -1,18 +1,29 @@ +# +# Default build rules for all user space components, every Makefile.am +# should include these rules and override or extend them as needed. +# + DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent -AM_CFLAGS = ${DEBUG_CFLAGS} -Wall -Wstrict-prototypes -AM_CFLAGS += ${NO_UNUSED_BUT_SET_VARIABLE} -AM_CFLAGS += ${NO_BOOL_COMPARE} -AM_CFLAGS += -fno-strict-aliasing -AM_CFLAGS += -std=gnu99 + +AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing +AM_CFLAGS += $(DEBUG_CFLAGS) +AM_CFLAGS += $(ASAN_CFLAGS) AM_CFLAGS += $(CODE_COVERAGE_CFLAGS) -AM_CPPFLAGS = -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -AM_CPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -AM_CPPFLAGS += -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 + +AM_CPPFLAGS = -D_GNU_SOURCE +AM_CPPFLAGS += -D_REENTRANT +AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64 +AM_CPPFLAGS += -D_LARGEFILE64_SOURCE +AM_CPPFLAGS += -DHAVE_LARGE_STACKS=1 AM_CPPFLAGS += -DTEXT_DOMAIN=\"zfs-linux-user\" AM_CPPFLAGS += -DLIBEXECDIR=\"$(libexecdir)\" AM_CPPFLAGS += -DRUNSTATEDIR=\"$(runstatedir)\" AM_CPPFLAGS += -DSBINDIR=\"$(sbindir)\" AM_CPPFLAGS += -DSYSCONFDIR=\"$(sysconfdir)\" +AM_CPPFLAGS += $(DEBUG_CPPFLAGS) AM_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS) + +AM_LDFLAGS = $(DEBUG_LDFLAGS) +AM_LDFLAGS += $(ASAN_LDFLAGS) diff --git a/config/always-compiler-options.m4 b/config/always-compiler-options.m4 new file mode 100644 index 000000000..fcbbf5e76 --- /dev/null +++ b/config/always-compiler-options.m4 @@ -0,0 +1,141 @@ +dnl # +dnl # Enabled -fsanitize=address if supported by gcc. +dnl # +dnl # LDFLAGS needs -fsanitize=address at all times so libraries compiled with +dnl # it will be linked successfully. CFLAGS will vary by binary being built. +dnl # +dnl # The ASAN_OPTIONS environment variable can be used to further control +dnl # the behavior of binaries and libraries build with -fsanitize=address. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_ASAN], [ + AC_MSG_CHECKING([whether to build with -fsanitize=address support]) + AC_ARG_ENABLE([asan], + [AS_HELP_STRING([--enable-asan], + [Enable -fsanitize=address support @<:@default=no@:>@])], + [], + [enable_asan=no]) + + AM_CONDITIONAL([ASAN_ENABLED], [test x$enable_asan = xyes]) + AC_SUBST([ASAN_ENABLED], [$enable_asan]) + AC_MSG_RESULT($enable_asan) + + AS_IF([ test "$enable_asan" = "yes" ], [ + AC_MSG_CHECKING([whether $CC supports -fsanitize=address]) + saved_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fsanitize=address" + AC_LINK_IFELSE([ + AC_LANG_SOURCE([[ int main() { return 0; } ]]) + ], [ + ASAN_CFLAGS="-fsanitize=address" + ASAN_LDFLAGS="-fsanitize=address" + ASAN_ZFS="_with_asan" + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_ERROR([$CC does not support -fsanitize=address]) + ]) + CFLAGS="$saved_cflags" + ], [ + ASAN_CFLAGS="" + ASAN_LDFLAGS="" + ASAN_ZFS="_without_asan" + ]) + + AC_SUBST([ASAN_CFLAGS]) + AC_SUBST([ASAN_LDFLAGS]) + AC_SUBST([ASAN_ZFS]) +]) + +dnl # +dnl # Check if gcc supports -Wframe-larger-than=<size> option. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN], [ + AC_MSG_CHECKING([whether $CC supports -Wframe-larger-than=<size>]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wframe-larger-than=4096" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + FRAME_LARGER_THAN="-Wframe-larger-than=4096" + AC_MSG_RESULT([yes]) + ], [ + FRAME_LARGER_THAN="" + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([FRAME_LARGER_THAN]) +]) + +dnl # +dnl # Check if gcc supports -Wno-format-truncation option. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION], [ + AC_MSG_CHECKING([whether $CC supports -Wno-format-truncation]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wno-format-truncation" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + NO_FORMAT_TRUNCATION=-Wno-format-truncation + AC_MSG_RESULT([yes]) + ], [ + NO_FORMAT_TRUNCATION= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_FORMAT_TRUNCATION]) +]) + + +dnl # +dnl # Check if gcc supports -Wno-bool-compare option. +dnl # +dnl # We actually invoke gcc with the -Wbool-compare option +dnl # and infer the 'no-' version does or doesn't exist based upon +dnl # the results. This is required because when checking any of +dnl # no- prefixed options gcc always returns success. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE], [ + AC_MSG_CHECKING([whether $CC supports -Wno-bool-compare]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wbool-compare" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + NO_BOOL_COMPARE=-Wno-bool-compare + AC_MSG_RESULT([yes]) + ], [ + NO_BOOL_COMPARE= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_BOOL_COMPARE]) +]) + +dnl # +dnl # Check if gcc supports -Wno-unused-but-set-variable option. +dnl # +dnl # We actually invoke gcc with the -Wunused-but-set-variable option +dnl # and infer the 'no-' version does or doesn't exist based upon +dnl # the results. This is required because when checking any of +dnl # no- prefixed options gcc always returns success. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE], [ + AC_MSG_CHECKING([whether $CC supports -Wno-unused-but-set-variable]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wunused-but-set-variable" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable + AC_MSG_RESULT([yes]) + ], [ + NO_UNUSED_BUT_SET_VARIABLE= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE]) +]) diff --git a/config/always-no-bool-compare.m4 b/config/always-no-bool-compare.m4 deleted file mode 100644 index 316b04b50..000000000 --- a/config/always-no-bool-compare.m4 +++ /dev/null @@ -1,27 +0,0 @@ -dnl # -dnl # Check if gcc supports -Wno-bool-compare option. -dnl # -dnl # We actually invoke gcc with the -Wbool-compare option -dnl # and infer the 'no-' version does or doesn't exist based upon -dnl # the results. This is required because when checking any of -dnl # no- prefixed options gcc always returns success. -dnl # -AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE], [ - AC_MSG_CHECKING([for -Wno-bool-compare support]) - - saved_flags="$CFLAGS" - CFLAGS="$CFLAGS -Wbool-compare" - - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], - [ - NO_BOOL_COMPARE=-Wno-bool-compare - AC_MSG_RESULT([yes]) - ], - [ - NO_BOOL_COMPARE= - AC_MSG_RESULT([no]) - ]) - - CFLAGS="$saved_flags" - AC_SUBST([NO_BOOL_COMPARE]) -]) diff --git a/config/always-no-unused-but-set-variable.m4 b/config/always-no-unused-but-set-variable.m4 deleted file mode 100644 index 863c90a16..000000000 --- a/config/always-no-unused-but-set-variable.m4 +++ /dev/null @@ -1,27 +0,0 @@ -dnl # -dnl # Check if gcc supports -Wno-unused-but-set-variable option. -dnl # -dnl # We actually invoke gcc with the -Wunused-but-set-variable option -dnl # and infer the 'no-' version does or doesn't exist based upon -dnl # the results. This is required because when checking any of -dnl # no- prefixed options gcc always returns success. -dnl # -AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE], [ - AC_MSG_CHECKING([for -Wno-unused-but-set-variable support]) - - saved_flags="$CFLAGS" - CFLAGS="$CFLAGS -Wunused-but-set-variable" - - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], - [ - NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable - AC_MSG_RESULT([yes]) - ], - [ - NO_UNUSED_BUT_SET_VARIABLE= - AC_MSG_RESULT([no]) - ]) - - CFLAGS="$saved_flags" - AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE]) -]) diff --git a/config/kernel.m4 b/config/kernel.m4 index b759ccd39..f8d81cdc0 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -125,21 +125,10 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_VM_NODE_STAT AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ - KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" + KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" ]) - AC_SUBST(KERNELMAKE_PARAMS) - - dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other - dnl # compiler options are added by the kernel build system. - KERNELCPPFLAGS="$KERNELCPPFLAGS -std=gnu99" - KERNELCPPFLAGS="$KERNELCPPFLAGS -Wno-declaration-after-statement" - KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE" - KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE" - KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL" - KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\"" - - AC_SUBST(KERNELCPPFLAGS) + AC_SUBST(KERNEL_MAKE) ]) dnl # diff --git a/config/user-frame-larger-than.m4 b/config/user-frame-larger-than.m4 deleted file mode 100644 index e0828eca0..000000000 --- a/config/user-frame-larger-than.m4 +++ /dev/null @@ -1,22 +0,0 @@ -dnl # -dnl # Check if gcc supports -Wframe-larger-than=<size> option. -dnl # -AC_DEFUN([ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN], [ - AC_MSG_CHECKING([for -Wframe-larger-than=<size> support]) - - saved_flags="$CFLAGS" - CFLAGS="$CFLAGS -Wframe-larger-than=1024" - - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], - [ - FRAME_LARGER_THAN=-Wframe-larger-than=1024 - AC_MSG_RESULT([yes]) - ], - [ - FRAME_LARGER_THAN= - AC_MSG_RESULT([no]) - ]) - - CFLAGS="$saved_flags" - AC_SUBST([FRAME_LARGER_THAN]) -]) diff --git a/config/user-no-format-truncation.m4 b/config/user-no-format-truncation.m4 deleted file mode 100644 index 4426907ee..000000000 --- a/config/user-no-format-truncation.m4 +++ /dev/null @@ -1,22 +0,0 @@ -dnl # -dnl # Check if gcc supports -Wno-format-truncation option. -dnl # -AC_DEFUN([ZFS_AC_CONFIG_USER_NO_FORMAT_TRUNCATION], [ - AC_MSG_CHECKING([for -Wno-format-truncation support]) - - saved_flags="$CFLAGS" - CFLAGS="$CFLAGS -Wno-format-truncation" - - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], - [ - NO_FORMAT_TRUNCATION=-Wno-format-truncation - AC_MSG_RESULT([yes]) - ], - [ - NO_FORMAT_TRUNCATION= - AC_MSG_RESULT([no]) - ]) - - CFLAGS="$saved_flags" - AC_SUBST([NO_FORMAT_TRUNCATION]) -]) diff --git a/config/user.m4 b/config/user.m4 index 73f6433a2..0bada893b 100644 --- a/config/user.m4 +++ b/config/user.m4 @@ -14,11 +14,9 @@ AC_DEFUN([ZFS_AC_CONFIG_USER], [ ZFS_AC_CONFIG_USER_LIBATTR ZFS_AC_CONFIG_USER_LIBUDEV ZFS_AC_CONFIG_USER_LIBSSL - ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN ZFS_AC_CONFIG_USER_RUNSTATEDIR ZFS_AC_CONFIG_USER_MAKEDEV_IN_SYSMACROS ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV - ZFS_AC_CONFIG_USER_NO_FORMAT_TRUNCATION ZFS_AC_TEST_FRAMEWORK diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 5eaa49c87..adc99edf5 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -7,27 +7,36 @@ AC_DEFUN([ZFS_AC_LICENSE], [ ]) AC_DEFUN([ZFS_AC_DEBUG_ENABLE], [ - KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG -Werror" - HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG -Werror" - DEBUG_CFLAGS="-DDEBUG -Werror" - DEBUG_STACKFLAGS="-fstack-check" + DEBUG_CFLAGS="-Werror" + DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" + DEBUG_LDFLAGS="" DEBUG_ZFS="_with_debug" AC_DEFINE(ZFS_DEBUG, 1, [zfs debugging enabled]) + + KERNEL_DEBUG_CFLAGS="-Werror" + KERNEL_DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" ]) AC_DEFUN([ZFS_AC_DEBUG_DISABLE], [ - KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG " - HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG " - DEBUG_CFLAGS="-DNDEBUG" - DEBUG_STACKFLAGS="" + DEBUG_CFLAGS="" + DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" + DEBUG_LDFLAGS="" DEBUG_ZFS="_without_debug" + + KERNEL_DEBUG_CFLAGS="" + KERNEL_DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" ]) +dnl # +dnl # When debugging is enabled: +dnl # - Enable all ASSERTs (-DDEBUG) +dnl # - Promote all compiler warnings to errors (-Werror) +dnl # AC_DEFUN([ZFS_AC_DEBUG], [ AC_MSG_CHECKING([whether assertion support will be enabled]) AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], - [Enable assertion support @<:@default=no@:>@])], + [Enable compiler and code assertions @<:@default=no@:>@])], [], [enable_debug=no]) @@ -38,18 +47,28 @@ AC_DEFUN([ZFS_AC_DEBUG], [ [ZFS_AC_DEBUG_DISABLE], [AC_MSG_ERROR([Unknown option $enable_debug])]) - AC_SUBST(DEBUG_STACKFLAGS) + AC_SUBST(DEBUG_CFLAGS) + AC_SUBST(DEBUG_CPPFLAGS) + AC_SUBST(DEBUG_LDFLAGS) AC_SUBST(DEBUG_ZFS) + + AC_SUBST(KERNEL_DEBUG_CFLAGS) + AC_SUBST(KERNEL_DEBUG_CPPFLAGS) + AC_MSG_RESULT([$enable_debug]) ]) -AC_DEFUN([ZFS_AC_DEBUGINFO_KERNEL], [ - KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS CONFIG_DEBUG_INFO=y" - KERNELCPPFLAGS="${KERNELCPPFLAGS} -fno-inline" +AC_DEFUN([ZFS_AC_DEBUGINFO_ENABLE], [ + DEBUG_CFLAGS="$DEBUG_CFLAGS -g -fno-inline" + + KERNEL_DEBUG_CFLAGS="$KERNEL_DEBUG_CFLAGS -fno-inline" + KERNEL_MAKE="$KERNEL_MAKE CONFIG_DEBUG_INFO=y" + + DEBUGINFO_ZFS="_with_debuginfo" ]) -AC_DEFUN([ZFS_AC_DEBUGINFO_USER], [ - DEBUG_CFLAGS="${DEBUG_CFLAGS} -g -fno-inline" +AC_DEFUN([ZFS_AC_DEBUGINFO_DISABLE], [ + DEBUGINFO_ZFS="_without_debuginfo" ]) AC_DEFUN([ZFS_AC_DEBUGINFO], [ @@ -62,23 +81,26 @@ AC_DEFUN([ZFS_AC_DEBUGINFO], [ AS_CASE(["x$enable_debuginfo"], ["xyes"], - [ZFS_AC_DEBUGINFO_KERNEL - ZFS_AC_DEBUGINFO_USER], - ["xkernel"], - [ZFS_AC_DEBUGINFO_KERNEL], - ["xuser"], - [ZFS_AC_DEBUGINFO_USER], + [ZFS_AC_DEBUGINFO_ENABLE], ["xno"], - [], - [AC_MSG_ERROR([Unknown option $enable_debug])]) + [ZFS_AC_DEBUGINFO_DISABLE], + [AC_MSG_ERROR([Unknown option $enable_debuginfo])]) AC_SUBST(DEBUG_CFLAGS) + AC_SUBST(DEBUGINFO_ZFS) + + AC_SUBST(KERNEL_DEBUG_CFLAGS) + AC_SUBST(KERNEL_MAKE) + AC_MSG_RESULT([$enable_debuginfo]) ]) AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [ - ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE - ZFS_AC_CONFIG_ALWAYS_NO_BOOL_COMPARE + ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE + ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE + ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN + ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION + ZFS_AC_CONFIG_ALWAYS_CC_ASAN ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD ZFS_AC_CONFIG_ALWAYS_ARCH ]) @@ -160,9 +182,23 @@ AC_DEFUN([ZFS_AC_RPM], [ ]) RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1"' - RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)" --define "_udevdir $(udevdir)" --define "_udevruledir $(udevruledir)" --define "_initconfdir $(DEFAULT_INITCONF_DIR)" $(DEFINE_INITRAMFS) $(DEFINE_SYSTEMD)' - RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)" --define "require_spldir $(SPL)" --define "require_splobj $(SPL_OBJ)" --define "ksrc $(LINUX)" --define "kobj $(LINUX_OBJ)"' - RPM_DEFINE_DKMS= + RPM_DEFINE_COMMON+=' --define "$(DEBUGINFO_ZFS) 1"' + RPM_DEFINE_COMMON+=' --define "$(ASAN_ZFS) 1"' + + RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)"' + RPM_DEFINE_UTIL+=' --define "_udevdir $(udevdir)"' + RPM_DEFINE_UTIL+=' --define "_udevruledir $(udevruledir)"' + RPM_DEFINE_UTIL+=' --define "_initconfdir $(DEFAULT_INITCONF_DIR)"' + RPM_DEFINE_UTIL+=' $(DEFINE_INITRAMFS)' + RPM_DEFINE_UTIL+=' $(DEFINE_SYSTEMD)' + + RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' + RPM_DEFINE_KMOD+=' --define "require_spldir $(SPL)"' + RPM_DEFINE_KMOD+=' --define "require_splobj $(SPL_OBJ)"' + RPM_DEFINE_KMOD+=' --define "ksrc $(LINUX)"' + RPM_DEFINE_KMOD+=' --define "kobj $(LINUX_OBJ)"' + + RPM_DEFINE_DKMS='' SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' SRPM_DEFINE_UTIL= diff --git a/lib/libavl/Makefile.am b/lib/libavl/Makefile.am index 6a42649b8..82b30bd80 100644 --- a/lib/libavl/Makefile.am +++ b/lib/libavl/Makefile.am @@ -2,7 +2,8 @@ include $(top_srcdir)/config/Rules.am VPATH = $(top_srcdir)/module/avl/ -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/lib/libefi/Makefile.am b/lib/libefi/Makefile.am index f0c05ee6c..9f69e4601 100644 --- a/lib/libefi/Makefile.am +++ b/lib/libefi/Makefile.am @@ -1,7 +1,5 @@ include $(top_srcdir)/config/Rules.am -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) - DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include @@ -11,11 +9,7 @@ noinst_LTLIBRARIES = libefi.la USER_C = \ rdwr_efi.c -KERNEL_C = - -nodist_libefi_la_SOURCES = \ - $(USER_C) \ - $(KERNEL_C) +nodist_libefi_la_SOURCES = $(USER_C) libefi_la_LIBADD = $(LIBUUID) diff --git a/lib/libicp/Makefile.am b/lib/libicp/Makefile.am index e1f08c8dd..d04a99e94 100644 --- a/lib/libicp/Makefile.am +++ b/lib/libicp/Makefile.am @@ -4,7 +4,8 @@ VPATH = \ $(top_srcdir)/module/icp \ $(top_srcdir)/lib/libicp -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/lib/libnvpair/Makefile.am b/lib/libnvpair/Makefile.am index 6da679fd5..d6ba6f89a 100644 --- a/lib/libnvpair/Makefile.am +++ b/lib/libnvpair/Makefile.am @@ -4,7 +4,11 @@ VPATH = \ $(top_srcdir)/module/nvpair \ $(top_srcdir)/lib/libnvpair -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(LIBTIRPC_CFLAGS) +# Required CFLAGS for libtirpc +AM_CFLAGS += $(LIBTIRPC_CFLAGS) + +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/lib/libshare/Makefile.am b/lib/libshare/Makefile.am index 42bd207be..462e333ff 100644 --- a/lib/libshare/Makefile.am +++ b/lib/libshare/Makefile.am @@ -14,10 +14,6 @@ USER_C = \ smb.c \ smb.h -KERNEL_C = - -nodist_libshare_la_SOURCES = \ - $(USER_C) - $(KERNEL_C) +nodist_libshare_la_SOURCES = $(USER_C) EXTRA_DIST = $(USER_C) diff --git a/lib/libspl/Makefile.am b/lib/libspl/Makefile.am index 395723af3..e4512700a 100644 --- a/lib/libspl/Makefile.am +++ b/lib/libspl/Makefile.am @@ -4,8 +4,6 @@ VPATH = \ $(top_srcdir)/lib/libspl \ $(top_srcdir)/lib/libspl/$(TARGET_ASM_DIR) -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) - SUBDIRS = include $(TARGET_ASM_DIR) DIST_SUBDIRS = include asm-generic asm-i386 asm-x86_64 @@ -36,12 +34,9 @@ USER_C = \ USER_ASM = atomic.S -KERNEL_C = - nodist_libspl_la_SOURCES = \ $(USER_C) \ - $(USER_ASM) \ - $(KERNEL_C) + $(USER_ASM) libspl_la_LIBADD = -lrt diff --git a/lib/libtpool/Makefile.am b/lib/libtpool/Makefile.am index adbaee6c3..586eec2ec 100644 --- a/lib/libtpool/Makefile.am +++ b/lib/libtpool/Makefile.am @@ -1,7 +1,5 @@ include $(top_srcdir)/config/Rules.am -AM_CFLAGS += $(DEBUG_STACKFLAGS) - DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include @@ -12,11 +10,7 @@ USER_C = \ thread_pool.c \ thread_pool_impl.h -KERNEL_C = - -nodist_libtpool_la_SOURCES = \ - $(USER_C) \ - $(KERNEL_C) +nodist_libtpool_la_SOURCES = $(USER_C) libtpool_la_LIBADD = \ $(top_builddir)/lib/libspl/libspl.la diff --git a/lib/libunicode/Makefile.am b/lib/libunicode/Makefile.am index 9bacae251..0a4734c03 100644 --- a/lib/libunicode/Makefile.am +++ b/lib/libunicode/Makefile.am @@ -2,7 +2,8 @@ include $(top_srcdir)/config/Rules.am VPATH = $(top_srcdir)/module/unicode -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) +# Includes kernel code, generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/lib/libuutil/Makefile.am b/lib/libuutil/Makefile.am index ed4a30de7..09eef792a 100644 --- a/lib/libuutil/Makefile.am +++ b/lib/libuutil/Makefile.am @@ -1,7 +1,5 @@ include $(top_srcdir)/config/Rules.am -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) - DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include @@ -19,11 +17,7 @@ USER_C = \ uu_pname.c \ uu_string.c -KERNEL_C = - -nodist_libuutil_la_SOURCES = \ - $(USER_C) \ - $(KERNEL_C) +nodist_libuutil_la_SOURCES = $(USER_C) libuutil_la_LIBADD = \ $(top_builddir)/lib/libavl/libavl.la \ diff --git a/lib/libzfs/Makefile.am b/lib/libzfs/Makefile.am index e5b2ce765..da40c96ce 100644 --- a/lib/libzfs/Makefile.am +++ b/lib/libzfs/Makefile.am @@ -5,6 +5,9 @@ VPATH = \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/lib/libzfs +# Suppress unused but set variable warnings often due to ASSERTs +AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) + libzfs_pcdir = $(datarootdir)/pkgconfig libzfs_pc_DATA = libzfs.pc libzfs_core.pc diff --git a/lib/libzfs_core/Makefile.am b/lib/libzfs_core/Makefile.am index 5eafc25c0..8abaebe73 100644 --- a/lib/libzfs_core/Makefile.am +++ b/lib/libzfs_core/Makefile.am @@ -9,11 +9,7 @@ lib_LTLIBRARIES = libzfs_core.la USER_C = \ libzfs_core.c -KERNEL_C = - -nodist_libzfs_core_la_SOURCES = \ - $(USER_C) \ - $(KERNEL_C) +nodist_libzfs_core_la_SOURCES = $(USER_C) libzfs_core_la_LIBADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la diff --git a/lib/libzpool/Makefile.am b/lib/libzpool/Makefile.am index 95e249342..06219168b 100644 --- a/lib/libzpool/Makefile.am +++ b/lib/libzpool/Makefile.am @@ -5,7 +5,11 @@ VPATH = \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/lib/libzpool -AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) +# Suppress unused but set variable warnings often due to ASSERTs +AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) + +# Includes kernel code generate warnings for large stack frames +AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ diff --git a/module/Makefile.in b/module/Makefile.in index 60973ec7d..1ca979f9d 100644 --- a/module/Makefile.in +++ b/module/Makefile.in @@ -1,18 +1,25 @@ subdir-m += avl +subdir-m += icp subdir-m += nvpair subdir-m += unicode subdir-m += zcommon subdir-m += zfs -subdir-m += icp INSTALL_MOD_DIR ?= extra +ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement +ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ ZFS_MODULE_CFLAGS += -include @SPL_OBJ@/spl_config.h ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h ZFS_MODULE_CFLAGS += -I@abs_top_srcdir@/include -I@SPL@/include -I@SPL@ + +ZFS_MODULE_CPPFLAGS += -DHAVE_SPL -D_KERNEL +ZFS_MODULE_CPPFLAGS += @KERNEL_DEBUG_CPPFLAGS@ + @CONFIG_QAT_TRUE@ZFS_MODULE_CFLAGS += -I@QAT_SRC@/include @CONFIG_QAT_TRUE@KBUILD_EXTRA_SYMBOLS += @QAT_SYMBOLS@ -export ZFS_MODULE_CFLAGS + +export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS SUBDIR_TARGETS = icp @@ -35,12 +42,12 @@ modules: list='$(SUBDIR_TARGETS)'; for targetdir in $$list; do \ $(MAKE) -C $$targetdir; \ done - $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ CONFIG_ZFS=m $@ + $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNEL_MAKE@ CONFIG_ZFS=m $@ clean: @# Only cleanup the kernel build directories when CONFIG_KERNEL @# is defined. This indicates that kernel modules should be built. -@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@ +@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNEL_MAKE@ $@ if [ -f @SPL_SYMBOLS@ ]; then $(RM) @SPL_SYMBOLS@; fi if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi diff --git a/module/avl/Makefile.in b/module/avl/Makefile.in index 98c011e8a..217fa3ca5 100644 --- a/module/avl/Makefile.in +++ b/module/avl/Makefile.in @@ -3,8 +3,8 @@ obj = @abs_builddir@ MODULE := zavl -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o +ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) + $(MODULE)-objs += avl.o diff --git a/module/icp/Makefile.in b/module/icp/Makefile.in index 77b2ec1b5..2eb9e6f1f 100644 --- a/module/icp/Makefile.in +++ b/module/icp/Makefile.in @@ -23,14 +23,11 @@ ifeq ($(TARGET_ASM_DIR), asm-generic) ASM_SOURCES := endif -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ -EXTRA_AFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o -ccflags-y += -I$(src)/include -asflags-y += -I$(src)/include -asflags-y += $(ZFS_MODULE_CFLAGS) +asflags-y := -I$(src)/include +ccflags-y := -I$(src)/include +ccflags-y += $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) $(MODULE)-objs += illumos-crypto.o $(MODULE)-objs += api/kcf_cipher.o diff --git a/module/nvpair/Makefile.in b/module/nvpair/Makefile.in index a8144452a..f420ef98b 100644 --- a/module/nvpair/Makefile.in +++ b/module/nvpair/Makefile.in @@ -3,10 +3,10 @@ obj = @abs_builddir@ MODULE := znvpair -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o +ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) + $(MODULE)-objs += nvpair.o $(MODULE)-objs += fnvpair.o $(MODULE)-objs += nvpair_alloc_spl.o diff --git a/module/unicode/Makefile.in b/module/unicode/Makefile.in index b26e66927..82c90373a 100644 --- a/module/unicode/Makefile.in +++ b/module/unicode/Makefile.in @@ -3,9 +3,9 @@ obj = @abs_builddir@ MODULE := zunicode -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o +ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) + $(MODULE)-objs += u8_textprep.o $(MODULE)-objs += uconv.o diff --git a/module/zcommon/Makefile.in b/module/zcommon/Makefile.in index 86eb8ad39..501fb24e1 100644 --- a/module/zcommon/Makefile.in +++ b/module/zcommon/Makefile.in @@ -3,10 +3,10 @@ obj = @abs_builddir@ MODULE := zcommon -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o +ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) + $(MODULE)-objs += zfeature_common.o $(MODULE)-objs += zfs_comutil.o $(MODULE)-objs += zfs_deleg.o diff --git a/module/zfs/Makefile.in b/module/zfs/Makefile.in index 66acc536d..cb352bf91 100644 --- a/module/zfs/Makefile.in +++ b/module/zfs/Makefile.in @@ -3,10 +3,13 @@ obj = @abs_builddir@ MODULE := zfs -EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@ - obj-$(CONFIG_ZFS) := $(MODULE).o +ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) + +# Suppress unused but set variable warnings often due to ASSERTs +ccflags-y += $(NO_UNUSED_BUT_SET_VARIABLE) + $(MODULE)-objs += abd.o $(MODULE)-objs += arc.o $(MODULE)-objs += blkptr.o diff --git a/rpm/generic/zfs-kmod.spec.in b/rpm/generic/zfs-kmod.spec.in index 22882627b..e8d91b4e9 100644 --- a/rpm/generic/zfs-kmod.spec.in +++ b/rpm/generic/zfs-kmod.spec.in @@ -37,6 +37,7 @@ #define buildforkernels akmod %bcond_with debug +%bcond_with debuginfo Name: %{module}-kmod @@ -116,6 +117,12 @@ bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{ %define debug --disable-debug %endif +%if %{with debuginfo} + %define debuginfo --enable-debuginfo +%else + %define debuginfo --disable-debuginfo +%endif + # # Allow the overriding of spl locations # @@ -156,7 +163,8 @@ for kernel_version in %{?kernel_versions}; do --with-linux-obj=%{kobj} \ --with-spl="%{spldir}" \ --with-spl-obj="%{splobj}" \ - %{debug} + %{debug} \ + %{debuginfo} make %{?_smp_mflags} cd .. done diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in index 20bb36e4e..b104e0d87 100644 --- a/rpm/generic/zfs.spec.in +++ b/rpm/generic/zfs.spec.in @@ -34,6 +34,8 @@ %endif %bcond_with debug +%bcond_with debuginfo +%bcond_with asan %bcond_with systemd # Generic enable switch for systemd @@ -223,6 +225,19 @@ image which is ZFS aware. %else %define debug --disable-debug %endif + +%if %{with debuginfo} + %define debuginfo --enable-debuginfo +%else + %define debuginfo --disable-debuginfo +%endif + +%if %{with asan} + %define asan --enable-asan +%else + %define asan --disable-asan +%endif + %if 0%{?_systemd} %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --disable-sysvinit %define systemd_svcs zfs-import-cache.service zfs-import-scan.service zfs-mount.service zfs-share.service zfs-zed.service zfs.target zfs-import.target @@ -240,6 +255,8 @@ image which is ZFS aware. --with-dracutdir=%{_dracutdir} \ --disable-static \ %{debug} \ + %{debuginfo} \ + %{asan} \ %{systemd} make %{?_smp_mflags} diff --git a/rpm/redhat/zfs-kmod.spec.in b/rpm/redhat/zfs-kmod.spec.in index aedd88eb4..f43adba76 100644 --- a/rpm/redhat/zfs-kmod.spec.in +++ b/rpm/redhat/zfs-kmod.spec.in @@ -1,4 +1,5 @@ %bcond_with debug +%bcond_with debuginfo Name: @PACKAGE@-kmod Version: @VERSION@ @@ -58,6 +59,12 @@ fi %define debug --disable-debug %endif +%if %{with debuginfo} +%define debuginfo --enable-debuginfo +%else +%define debuginfo --disable-debuginfo +%endif + %setup -n %{kmod_name}-%{version} %build %configure \ @@ -66,7 +73,8 @@ fi --with-linux-obj=%{kobj} \ --with-spl="%{splsrc}" \ --with-spl-obj="%{splobj}" \ - %{debug} + %{debug} \ + %{debuginfo} make %{?_smp_mflags} %install diff --git a/scripts/zloop.sh b/scripts/zloop.sh index afcd87f36..b6f6fc994 100755 --- a/scripts/zloop.sh +++ b/scripts/zloop.sh @@ -30,6 +30,7 @@ fi # shellcheck disable=SC2034 PROG=zloop.sh +GDB=${GDB:-gdb} DEFAULTWORKDIR=/var/tmp DEFAULTCOREDIR=/var/tmp/zloop @@ -182,6 +183,7 @@ shift $((OPTIND - 1)) # enable core dumps ulimit -c unlimited +export ASAN_OPTIONS=abort_on_error=1:disable_coredump=0 if [[ -f "$(core_file)" ]]; then echo -n "There's a core dump here you might want to look at first... " diff --git a/tests/zfs-tests/tests/functional/checksum/Makefile.am b/tests/zfs-tests/tests/functional/checksum/Makefile.am index 8132ea1d6..cacb3c927 100644 --- a/tests/zfs-tests/tests/functional/checksum/Makefile.am +++ b/tests/zfs-tests/tests/functional/checksum/Makefile.am @@ -1,4 +1,5 @@ include $(top_srcdir)/config/Rules.am + AM_CPPFLAGS += -I$(top_srcdir)/include LDADD = $(top_srcdir)/lib/libicp/libicp.la diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh index 27a429db8..b21b6c657 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh @@ -93,6 +93,7 @@ if is_linux; then ulimit -c unlimited echo "$corepath/core.zfs" >/proc/sys/kernel/core_pattern echo 0 >/proc/sys/kernel/core_uses_pid + export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" else log_must coreadm -p ${corepath}/core.%f fi diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh index a45e4a883..d4abaa5ff 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh @@ -89,6 +89,7 @@ if is_linux; then ulimit -c unlimited echo "$corepath/core.zpool" >/proc/sys/kernel/core_pattern echo 0 >/proc/sys/kernel/core_uses_pid + export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" else coreadm -p ${corepath}/core.%f fi diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh index 8bfbb5fd8..0f04f0c04 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh @@ -61,9 +61,10 @@ log_mustnot zpool freeze fakepool [[ -f core ]] && log_must rm -f core if is_linux; then - ulimit -c unlimited - echo "core" >/proc/sys/kernel/core_pattern - echo 0 >/proc/sys/kernel/core_uses_pid + ulimit -c unlimited + echo "core" >/proc/sys/kernel/core_pattern + echo 0 >/proc/sys/kernel/core_uses_pid + export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" fi ZFS_ABORT=1; export ZFS_ABORT diff --git a/tests/zfs-tests/tests/functional/hkdf/Makefile.am b/tests/zfs-tests/tests/functional/hkdf/Makefile.am index 37fe2ed2c..d0a68f442 100644 --- a/tests/zfs-tests/tests/functional/hkdf/Makefile.am +++ b/tests/zfs-tests/tests/functional/hkdf/Makefile.am @@ -1,4 +1,5 @@ include $(top_srcdir)/config/Rules.am + AM_CPPFLAGS += -I$(top_srcdir)/include AM_CPPFLAGS += -I$(top_srcdir)/lib/libspl/include LDADD = $(top_srcdir)/lib/libicp/libicp.la |