From 6f1db5f37ede685ebe55d1549c635e0aef4661b5 Mon Sep 17 00:00:00 2001 From: Serapheim Dimitropoulos Date: Fri, 10 Jul 2020 15:30:31 -0700 Subject: [PATCH] Unconditionally enable debugging for libzpool We already enable -DDEBUG unconditionally (meaning regardless of this is a debug build or a performance build) for zdb and ztest as they are mostly used for development and debugging. This patch enables -DDEBUG for libzpool extending the debugging checks for zdb, ztest, and a couple of other test utilities. In addition to passing -DDEBUG we also enable -DZFS_DEBUG so all assertion checks work s expected. We do so not only in libzpool but in every utility that links to it, even if the utility doesn't directly use any functionality wrapped in ZFS_DEBUG macro definitions. The reason is that these utilities may still include headers that contain structs that have more fields when ZFS_DEBUG is defined. This can be a problem as enabling that flag for libzpool but not for zdb can lead into random problems (e.g. segmentation faults) as zdb may be have an incorrect view of a struct passed to it by libzpool. Reviewed-by: Brian Behlendorf Reviewed-by: Matthew Ahrens Signed-off-by: Serapheim Dimitropoulos Closes #10549 --- cmd/raidz_test/Makefile.am | 2 +- cmd/zdb/Makefile.am | 2 +- cmd/zhack/Makefile.am | 3 +++ cmd/ztest/Makefile.am | 2 +- lib/libzpool/Makefile.am | 3 +++ tests/zfs-tests/cmd/btree_test/Makefile.am | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/raidz_test/Makefile.am b/cmd/raidz_test/Makefile.am index ccfa7019cb..72c914e641 100644 --- a/cmd/raidz_test/Makefile.am +++ b/cmd/raidz_test/Makefile.am @@ -4,7 +4,7 @@ include $(top_srcdir)/config/Rules.am AM_CFLAGS += $(FRAME_LARGER_THAN) # Unconditionally enable ASSERTs -AM_CPPFLAGS += -DDEBUG -UNDEBUG +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG bin_PROGRAMS = raidz_test diff --git a/cmd/zdb/Makefile.am b/cmd/zdb/Makefile.am index 7a29e54f69..b325cb060b 100644 --- a/cmd/zdb/Makefile.am +++ b/cmd/zdb/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/config/Rules.am # Unconditionally enable debugging for zdb -AM_CPPFLAGS += -DDEBUG -UNDEBUG +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG sbin_PROGRAMS = zdb diff --git a/cmd/zhack/Makefile.am b/cmd/zhack/Makefile.am index 6c5b5d096c..5cddac32b5 100644 --- a/cmd/zhack/Makefile.am +++ b/cmd/zhack/Makefile.am @@ -1,5 +1,8 @@ include $(top_srcdir)/config/Rules.am +# Unconditionally enable debugging for zhack +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG + sbin_PROGRAMS = zhack zhack_SOURCES = \ diff --git a/cmd/ztest/Makefile.am b/cmd/ztest/Makefile.am index 40d029d9f3..6042b44d1d 100644 --- a/cmd/ztest/Makefile.am +++ b/cmd/ztest/Makefile.am @@ -7,7 +7,7 @@ AM_CFLAGS += $(NO_FORMAT_TRUNCATION) AM_CFLAGS += $(FRAME_LARGER_THAN) # Unconditionally enable ASSERTs -AM_CPPFLAGS += -DDEBUG -UNDEBUG +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG sbin_PROGRAMS = ztest diff --git a/lib/libzpool/Makefile.am b/lib/libzpool/Makefile.am index 6256d5e739..7924a425d2 100644 --- a/lib/libzpool/Makefile.am +++ b/lib/libzpool/Makefile.am @@ -7,6 +7,9 @@ VPATH = \ $(top_srcdir)/module/os/linux/zfs \ $(top_srcdir)/lib/libzpool +# Unconditionally enable debugging for libzpool +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG + # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) diff --git a/tests/zfs-tests/cmd/btree_test/Makefile.am b/tests/zfs-tests/cmd/btree_test/Makefile.am index 0bb8f99173..4c9a1a4cc2 100644 --- a/tests/zfs-tests/cmd/btree_test/Makefile.am +++ b/tests/zfs-tests/cmd/btree_test/Makefile.am @@ -22,7 +22,7 @@ DEFAULT_INCLUDES += \ -I$(top_srcdir)/lib/libspl/include # Unconditionally enable ASSERTs -AM_CPPFLAGS += -DDEBUG -UNDEBUG +AM_CPPFLAGS += -DDEBUG -UNDEBUG -DZFS_DEBUG pkgexec_PROGRAMS = btree_test btree_test_SOURCES = btree_test.c