diff --git a/config/Rules.am b/config/Rules.am index 9a9dd452a..1e569d341 100644 --- a/config/Rules.am +++ b/config/Rules.am @@ -8,6 +8,7 @@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing +AM_CFLAGS += $(NO_OMIT_FRAME_POINTER) AM_CFLAGS += $(DEBUG_CFLAGS) AM_CFLAGS += $(ASAN_CFLAGS) AM_CFLAGS += $(CODE_COVERAGE_CFLAGS) diff --git a/config/always-compiler-options.m4 b/config/always-compiler-options.m4 index fcbbf5e76..e187f6ff8 100644 --- a/config/always-compiler-options.m4 +++ b/config/always-compiler-options.m4 @@ -139,3 +139,24 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE], [ CFLAGS="$saved_flags" AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE]) ]) + +dnl # +dnl # Check if gcc supports -fno-omit-frame-pointer option. +dnl # +AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER], [ + AC_MSG_CHECKING([whether $CC supports -fno-omit-frame-pointer]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -fno-omit-frame-pointer" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + NO_OMIT_FRAME_POINTER=-fno-omit-frame-pointer + AC_MSG_RESULT([yes]) + ], [ + NO_OMIT_FRAME_POINTER= + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" + AC_SUBST([NO_OMIT_FRAME_POINTER]) +]) diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 6e305996e..8e221f2d7 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -157,6 +157,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [ 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_NO_OMIT_FRAME_POINTER ZFS_AC_CONFIG_ALWAYS_CC_ASAN ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD ZFS_AC_CONFIG_ALWAYS_ARCH