From c00c3e33bb9c46b8c6f6b10a85a68f2c5e237ade Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Mon, 21 Oct 2024 09:00:39 +0300 Subject: [PATCH] config: add and use KERNEL_CC check for `-Wno-format-zero-length` Reviewed-by: Brian Behlendorf Signed-off-by: Ivan Shapovalov Closes #16997 --- config/always-compiler-options.m4 | 28 ++++++++++++++++++++++++++++ config/zfs-build.m4 | 1 + module/Kbuild.in | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/config/always-compiler-options.m4 b/config/always-compiler-options.m4 index acd17cbf4..37fa079e0 100644 --- a/config/always-compiler-options.m4 +++ b/config/always-compiler-options.m4 @@ -155,6 +155,34 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_ZERO_LENGTH], [ AC_SUBST([NO_FORMAT_ZERO_LENGTH]) ]) +dnl # +dnl # Check if kernel cc supports -Wno-format-zero-length option. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_NO_FORMAT_ZERO_LENGTH], [ + saved_cc="$CC" + AS_IF( + [ test -n "$KERNEL_CC" ], [ CC="$KERNEL_CC" ], + [ test -n "$KERNEL_LLVM" ], [ CC="clang" ], + [ CC="gcc" ] + ) + AC_MSG_CHECKING([whether $CC supports -Wno-format-zero-length]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Werror -Wno-format-zero-length" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + KERNEL_NO_FORMAT_ZERO_LENGTH=-Wno-format-zero-length + AC_MSG_RESULT([yes]) + ], [ + KERNEL_NO_FORMAT_ZERO_LENGTH= + AC_MSG_RESULT([no]) + ]) + + CC="$saved_cc" + CFLAGS="$saved_flags" + AC_SUBST([KERNEL_NO_FORMAT_ZERO_LENGTH]) +]) + dnl # dnl # Check if cc supports -Wno-clobbered option. dnl # diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 7cf1b02d8..fd92614f6 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -256,6 +256,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [ ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_ZERO_LENGTH + ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_NO_FORMAT_ZERO_LENGTH ZFS_AC_CONFIG_ALWAYS_CC_FORMAT_OVERFLOW ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER ZFS_AC_CONFIG_ALWAYS_CC_NO_IPA_SRA diff --git a/module/Kbuild.in b/module/Kbuild.in index 362d2295e..58a80dc44 100644 --- a/module/Kbuild.in +++ b/module/Kbuild.in @@ -4,7 +4,7 @@ ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement ZFS_MODULE_CFLAGS += -Wmissing-prototypes -ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @NO_FORMAT_ZERO_LENGTH@ +ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @KERNEL_NO_FORMAT_ZERO_LENGTH@ ifneq ($(KBUILD_EXTMOD),) zfs_include = @abs_top_srcdir@/include