Re: [PATCH] Kbuild: Add an option to enable GCC VTA

From: Josh Boyer
Date: Fri Apr 24 2015 - 08:40:16 EST


On Thu, Apr 23, 2015 at 5:25 PM, Frank Ch. Eigler <fche@xxxxxxxxxx> wrote:
> From: Josh Stone <jistone@xxxxxxxxxx>
>
> Due to isolated gcc codegen issues, gcc -fvar-tracking-assignments
> was unconditionally disabled in commit 2062afb4f804 ("Fix gcc-4.9.0
> miscompilation of load_balance() in scheduler").
>
> However, this reduces the debuginfo coverage for variable locations,
> especially in inline functions. VTA is certainly not perfect either
> in those cases, but it is much better than without. With compiler
> versions that have fixed the codegen bugs, we would prefer to have the
> better details for SystemTap, and surely other debuginfo consumers
> like perf will benefit as well.
>
> This patch simply makes CONFIG_DEBUG_INFO_VTA an option. I considered
> Frank and Linus's discussion of a cc-option-like -fcompare-debug test,
> but I'm convinced that a narrow test of an arch-specific codegen issue
> is not really useful. GCC has their own regression tests for this, so
> I'd suggest GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle is more
> useful for kernel developers to test confidence.
>
> In fact, I ran into a couple more issues when testing for this patch[1],
> although neither of those had any codegen impact.
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=1140872
>
> With gcc-4.9.2-1.fc22, I can now build v3.18-rc5 with Fedora's i686 and
> x86_64 configs, and this is completely clean with GCC_COMPARE_DEBUG.
>
> Cc: Jakub Jelinek <jakub@xxxxxxxxxx>
> Cc: Josh Boyer <jwboyer@xxxxxxxxxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx>
> Cc: Michel Dänzer <michel@xxxxxxxxxxx>
> Signed-off-by: Josh Stone <jistone@xxxxxxxxxx>
> Signed-off-by: Frank Ch. Eigler <fche@xxxxxxxxxx>

Frank, did you rebase this against some newer tree or something?
Curious why you sent it again.

> Makefile | 8 ++++++--
> lib/Kconfig.debug | 21 ++++++++++++++++++++-
> 2 files changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 6cc5b2434224..c8e1fcfdb41a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -704,8 +704,6 @@ KBUILD_CFLAGS += -fomit-frame-pointer
> endif
> endif
>
> -KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)
> -
> ifdef CONFIG_DEBUG_INFO
> ifdef CONFIG_DEBUG_INFO_SPLIT
> KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g)
> @@ -718,6 +716,12 @@ ifdef CONFIG_DEBUG_INFO_DWARF4
> KBUILD_CFLAGS += $(call cc-option, -gdwarf-4,)
> endif
>
> +ifdef CONFIG_DEBUG_INFO_VTA
> +KBUILD_CFLAGS += $(call cc-option, -fvar-tracking-assignments)
> +else
> +KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)
> +endif
> +

Is there a reason you moved this hunk under the DWARF4 options instead
of modifying it in-place like the original patch did?

josh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/