Skip to content

Commit

Permalink
kbuild: Only add -fno-var-tracking-assignments for old GCC versions
Browse files Browse the repository at this point in the history
Some old GCC versions between 4.5.0 and 4.9.1 might miscompile code
with -fvar-tracking-assingments (which is enabled by default with -g -O2).
Commit 2062afb ("Fix gcc-4.9.0 miscompilation of load_balance()
in scheduler") added -fno-var-tracking-assignments unconditionally to
work around this. But newer versions of GCC no longer have this bug, so
only add it for versions of GCC before 5.0. This allows various tools
such as a perf probe or gdb debuggers or systemtap to resolve variable
locations using dwarf locations in more code.

Signed-off-by: Mark Wielaard <[email protected]>
Acked-by: Ian Rogers <[email protected]>
Reviewed-by: Andi Kleen <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
  • Loading branch information
Mark Wielaard authored and masahir0y committed Oct 20, 2020
1 parent 8402ee1 commit 121c5d0
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -814,7 +814,11 @@ KBUILD_CFLAGS += -ftrivial-auto-var-init=zero
KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
endif

DEBUG_CFLAGS := $(call cc-option, -fno-var-tracking-assignments)
# Workaround for GCC versions < 5.0
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801
ifdef CONFIG_CC_IS_GCC
DEBUG_CFLAGS := $(call cc-ifversion, -lt, 0500, $(call cc-option, -fno-var-tracking-assignments))
endif

ifdef CONFIG_DEBUG_INFO

Expand Down

0 comments on commit 121c5d0

Please sign in to comment.