* [PATCH] Only add -fno-var-tracking-assignments workaround for old GCC versions. [not found] <CAP-5=fUT-1-CR-KMMsrpzgw9b3nBooeY05=YU9XKa5enO9SK+A@mail.gmail.com> @ 2020-10-14 11:01 ` Mark Wielaard 2020-10-14 15:17 ` Andi Kleen 2020-10-17 12:01 ` [PATCH V2] " Mark Wielaard 0 siblings, 2 replies; 5+ messages in thread From: Mark Wielaard @ 2020-10-14 11:01 UTC (permalink / raw) To: linux-kernel, Masahiro Yamada, Michal Marek, linux-kbuild Cc: Ian Rogers, Mark Wielaard, linux-toolchains, Andi Kleen, Nick Desaulniers, Segher Boessenkool, Florian Weimer 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 2062afb4f 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. Signed-off-by: Mark Wielaard <mark@klomp.org> Acked-by: Ian Rogers <irogers@google.com> Cc: linux-toolchains@vger.kernel.org Cc: Andi Kleen <andi@firstfloor.org> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Segher Boessenkool <segher@kernel.crashing.org> Cc: Florian Weimer <fw@deneb.enyo.de> --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 51540b291738..8477fee5f309 100644 --- a/Makefile +++ b/Makefile @@ -813,7 +813,9 @@ 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 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801 +# for old versions of GCC. +DEBUG_CFLAGS := $(call cc-ifversion, -lt, 0500, $(call cc-option, -fno-var-tracking-assignments)) ifdef CONFIG_DEBUG_INFO ifdef CONFIG_DEBUG_INFO_SPLIT -- 2.18.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] Only add -fno-var-tracking-assignments workaround for old GCC versions. 2020-10-14 11:01 ` [PATCH] Only add -fno-var-tracking-assignments workaround for old GCC versions Mark Wielaard @ 2020-10-14 15:17 ` Andi Kleen 2020-10-17 12:01 ` [PATCH V2] " Mark Wielaard 1 sibling, 0 replies; 5+ messages in thread From: Andi Kleen @ 2020-10-14 15:17 UTC (permalink / raw) To: Mark Wielaard Cc: linux-kernel, Masahiro Yamada, Michal Marek, linux-kbuild, Ian Rogers, linux-toolchains, Andi Kleen, Nick Desaulniers, Segher Boessenkool, Florian Weimer On Wed, Oct 14, 2020 at 01:01:32PM +0200, Mark Wielaard wrote: > 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 2062afb4f 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. Add ... 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 <mark@klomp.org> > Acked-by: Ian Rogers <irogers@google.com> > Cc: linux-toolchains@vger.kernel.org > Cc: Andi Kleen <andi@firstfloor.org> > Cc: Nick Desaulniers <ndesaulniers@google.com> > Cc: Segher Boessenkool <segher@kernel.crashing.org> > Cc: Florian Weimer <fw@deneb.enyo.de> Reviewed-by: Andi Kleen <ak@linux.intel.com> -Andi ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V2] Only add -fno-var-tracking-assignments workaround for old GCC versions. 2020-10-14 11:01 ` [PATCH] Only add -fno-var-tracking-assignments workaround for old GCC versions Mark Wielaard 2020-10-14 15:17 ` Andi Kleen @ 2020-10-17 12:01 ` Mark Wielaard 2020-10-19 19:30 ` Nick Desaulniers 2020-10-20 15:27 ` Masahiro Yamada 1 sibling, 2 replies; 5+ messages in thread From: Mark Wielaard @ 2020-10-17 12:01 UTC (permalink / raw) To: linux-kernel, Masahiro Yamada, Michal Marek, linux-kbuild Cc: Ian Rogers, Andi Kleen, Mark Wielaard, linux-toolchains, Nick Desaulniers, Segher Boessenkool, Florian Weimer, Sedat Dilek 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 2062afb4f 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. Changes in V2: - Update commit message explaining purpose. - Explicitly mention GCC version in comment. - Wrap workaround in ifdef CONFIG_CC_IS_GCC Signed-off-by: Mark Wielaard <mark@klomp.org> Acked-by: Ian Rogers <irogers@google.com> Reviewed-by: Andi Kleen <andi@firstfloor.org> Cc: linux-toolchains@vger.kernel.org Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Segher Boessenkool <segher@kernel.crashing.org> Cc: Florian Weimer <fw@deneb.enyo.de> Cc: Sedat Dilek <sedat.dilek@gmail.com> --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 51540b291738..964754b4cedf 100644 --- a/Makefile +++ b/Makefile @@ -813,7 +813,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 ifdef CONFIG_DEBUG_INFO_SPLIT -- 2.18.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V2] Only add -fno-var-tracking-assignments workaround for old GCC versions. 2020-10-17 12:01 ` [PATCH V2] " Mark Wielaard @ 2020-10-19 19:30 ` Nick Desaulniers 2020-10-20 15:27 ` Masahiro Yamada 1 sibling, 0 replies; 5+ messages in thread From: Nick Desaulniers @ 2020-10-19 19:30 UTC (permalink / raw) To: Mark Wielaard Cc: LKML, Masahiro Yamada, Michal Marek, Linux Kbuild mailing list, Ian Rogers, Andi Kleen, linux-toolchains, Segher Boessenkool, Florian Weimer, Sedat Dilek On Sat, Oct 17, 2020 at 5:02 AM Mark Wielaard <mark@klomp.org> wrote: > > 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 2062afb4f 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. > > Changes in V2: > - Update commit message explaining purpose. > - Explicitly mention GCC version in comment. > - Wrap workaround in ifdef CONFIG_CC_IS_GCC > > Signed-off-by: Mark Wielaard <mark@klomp.org> > Acked-by: Ian Rogers <irogers@google.com> > Reviewed-by: Andi Kleen <andi@firstfloor.org> > Cc: linux-toolchains@vger.kernel.org > Cc: Nick Desaulniers <ndesaulniers@google.com> > Cc: Segher Boessenkool <segher@kernel.crashing.org> > Cc: Florian Weimer <fw@deneb.enyo.de> > Cc: Sedat Dilek <sedat.dilek@gmail.com> > --- > Makefile | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 51540b291738..964754b4cedf 100644 > --- a/Makefile > +++ b/Makefile > @@ -813,7 +813,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)) Thanks for adding the comment. That will help us find+remove this when the kernel's minimum supported version of GCC advances to gcc-5. The current minimum supported version of GCC according to Documentation/process/changes.rst is gcc-4.9 (so anything older is irrelevant, and we drop support for it). If gcc 4.9 supports `-fno-var-tracking-assignments` (it looks like it does: https://godbolt.org/z/oa53f5), then we should drop the `cc-option` call, which will save us a compiler invocation for each invocation of `make`. > +endif > > ifdef CONFIG_DEBUG_INFO > ifdef CONFIG_DEBUG_INFO_SPLIT > -- > 2.18.4 > -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH V2] Only add -fno-var-tracking-assignments workaround for old GCC versions. 2020-10-17 12:01 ` [PATCH V2] " Mark Wielaard 2020-10-19 19:30 ` Nick Desaulniers @ 2020-10-20 15:27 ` Masahiro Yamada 1 sibling, 0 replies; 5+ messages in thread From: Masahiro Yamada @ 2020-10-20 15:27 UTC (permalink / raw) To: Mark Wielaard Cc: Linux Kernel Mailing List, Michal Marek, Linux Kbuild mailing list, Ian Rogers, Andi Kleen, linux-toolchains, Nick Desaulniers, Segher Boessenkool, Florian Weimer, Sedat Dilek On Sat, Oct 17, 2020 at 9:02 PM Mark Wielaard <mark@klomp.org> wrote: > > 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 2062afb4f 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. > > Changes in V2: > - Update commit message explaining purpose. > - Explicitly mention GCC version in comment. > - Wrap workaround in ifdef CONFIG_CC_IS_GCC > > Signed-off-by: Mark Wielaard <mark@klomp.org> > Acked-by: Ian Rogers <irogers@google.com> > Reviewed-by: Andi Kleen <andi@firstfloor.org> > Cc: linux-toolchains@vger.kernel.org > Cc: Nick Desaulniers <ndesaulniers@google.com> > Cc: Segher Boessenkool <segher@kernel.crashing.org> > Cc: Florian Weimer <fw@deneb.enyo.de> > Cc: Sedat Dilek <sedat.dilek@gmail.com> > --- Applied to linux-kbuild. Thanks. > Makefile | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 51540b291738..964754b4cedf 100644 > --- a/Makefile > +++ b/Makefile > @@ -813,7 +813,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 > ifdef CONFIG_DEBUG_INFO_SPLIT > -- > 2.18.4 > -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-20 15:28 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CAP-5=fUT-1-CR-KMMsrpzgw9b3nBooeY05=YU9XKa5enO9SK+A@mail.gmail.com> 2020-10-14 11:01 ` [PATCH] Only add -fno-var-tracking-assignments workaround for old GCC versions Mark Wielaard 2020-10-14 15:17 ` Andi Kleen 2020-10-17 12:01 ` [PATCH V2] " Mark Wielaard 2020-10-19 19:30 ` Nick Desaulniers 2020-10-20 15:27 ` Masahiro Yamada
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).