summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/raidz_test/Makefile.am7
-rw-r--r--cmd/zdb/Makefile.am3
-rw-r--r--cmd/ztest/Makefile.am10
-rw-r--r--config/Rules.am27
-rw-r--r--config/always-compiler-options.m4141
-rw-r--r--config/always-no-bool-compare.m427
-rw-r--r--config/always-no-unused-but-set-variable.m427
-rw-r--r--config/kernel.m415
-rw-r--r--config/user-frame-larger-than.m422
-rw-r--r--config/user-no-format-truncation.m422
-rw-r--r--config/user.m42
-rw-r--r--config/zfs-build.m492
-rw-r--r--lib/libavl/Makefile.am3
-rw-r--r--lib/libefi/Makefile.am8
-rw-r--r--lib/libicp/Makefile.am3
-rw-r--r--lib/libnvpair/Makefile.am6
-rw-r--r--lib/libshare/Makefile.am6
-rw-r--r--lib/libspl/Makefile.am7
-rw-r--r--lib/libtpool/Makefile.am8
-rw-r--r--lib/libunicode/Makefile.am3
-rw-r--r--lib/libuutil/Makefile.am8
-rw-r--r--lib/libzfs/Makefile.am3
-rw-r--r--lib/libzfs_core/Makefile.am6
-rw-r--r--lib/libzpool/Makefile.am6
-rw-r--r--module/Makefile.in15
-rw-r--r--module/avl/Makefile.in4
-rw-r--r--module/icp/Makefile.in9
-rw-r--r--module/nvpair/Makefile.in4
-rw-r--r--module/unicode/Makefile.in4
-rw-r--r--module/zcommon/Makefile.in4
-rw-r--r--module/zfs/Makefile.in7
-rw-r--r--rpm/generic/zfs-kmod.spec.in10
-rw-r--r--rpm/generic/zfs.spec.in17
-rw-r--r--rpm/redhat/zfs-kmod.spec.in10
-rwxr-xr-xscripts/zloop.sh2
-rw-r--r--tests/zfs-tests/tests/functional/checksum/Makefile.am1
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh1
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh1
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh7
-rw-r--r--tests/zfs-tests/tests/functional/hkdf/Makefile.am1
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