]> git.proxmox.com Git - mirror_zfs.git/commitdiff
compile with -fno-omit-frame-pointer
authorRichard Elling <Richard.Elling@RichardElling.com>
Sun, 14 Apr 2019 18:04:54 +0000 (11:04 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sun, 14 Apr 2019 18:04:54 +0000 (11:04 -0700)
By default, depending on the version, gcc can reuse the frame pointer register.
This is a micro-optimization that might help on some very old x86 processors.
However, it also makes dynamic tracing less useful because the stacks cannot
be easily observed.

This rule change instructs gcc to use the -fno-omit-frame-pointer option
when compiling.

Reviewed-by: Olaf Faaland <faaland1@llnl.gov>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Elling <Richard.Elling@RichardElling.com>
Closes #8617

config/Rules.am
config/always-compiler-options.m4
config/zfs-build.m4

index 9a9dd452ae47424c21415ea80fd9d99077115797..1e569d3419b1d91bd220aa360a8f41d21798c2c6 100644 (file)
@@ -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)
index fcbbf5e76b870c39ff3056a7d26f9c92455bd8a8..e187f6ff8fc872d7950ec4001be53c95824299e3 100644 (file)
@@ -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])
+])
index 6e305996e5ebde5e774cb1552f47b92ff1c2bf08..8e221f2d7d40a459ea75693640b810828beaae50 100644 (file)
@@ -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