diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2014-12-16 12:13:21 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2014-12-16 12:13:21 -0500 |
commit | 401d0d95f4aa5afd87c917829bf2127c6b93edc0 (patch) | |
tree | 160dc8eea13e79b12e27baf597d82dd37050bbf4 | |
parent | 2b541ad477628208e70997d3a8cd4279ea216964 (diff) | |
download | kernel-401d0d95f4aa5afd87c917829bf2127c6b93edc0.tar.gz kernel-401d0d95f4aa5afd87c917829bf2127c6b93edc0.tar.xz kernel-401d0d95f4aa5afd87c917829bf2127c6b93edc0.zip |
Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580)
-rw-r--r-- | Kbuild-Add-an-option-to-enable-GCC-VTA.patch | 92 | ||||
-rw-r--r-- | config-generic | 1 | ||||
-rw-r--r-- | kernel.spec | 8 |
3 files changed, 101 insertions, 0 deletions
diff --git a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch new file mode 100644 index 000000000..561ce4ebd --- /dev/null +++ b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch @@ -0,0 +1,92 @@ +From: Josh Stone <jistone@redhat.com> +Date: Fri, 21 Nov 2014 10:40:00 -0800 +Subject: [PATCH] Kbuild: Add an option to enable GCC VTA +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to recent codegen issues, gcc -fvar-tracking-assignments was +unconditionally disabled in commit 2062afb4f804a ("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: Frank Ch. Eigler <fche@redhat.com> +Cc: Jakub Jelinek <jakub@redhat.com> +Cc: Josh Boyer <jwboyer@fedoraproject.org> +Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: Linus Torvalds <torvalds@linux-foundation.org> +Cc: Andrew Morton <akpm@linux-foundation.org> +Cc: Markus Trippelsdorf <markus@trippelsdorf.de> +Cc: Michel Dänzer <michel@daenzer.net> +Signed-off-by: Josh Stone <jistone@redhat.com> +--- + Makefile | 4 ++++ + lib/Kconfig.debug | 18 +++++++++++++++++- + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index fd80c6e9bc23..4ba81e0dce46 100644 +--- a/Makefile ++++ b/Makefile +@@ -704,7 +704,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer + endif + 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 + + ifdef CONFIG_DEBUG_INFO + ifdef CONFIG_DEBUG_INFO_SPLIT +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index 4e35a5d767ed..27410417de1d 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -165,7 +165,23 @@ config DEBUG_INFO_DWARF4 + Generate dwarf4 debug info. This requires recent versions + of gcc and gdb. It makes the debug information larger. + But it significantly improves the success of resolving +- variables in gdb on optimized code. ++ variables in gdb on optimized code. The gcc docs also ++ recommend enabling -fvar-tracking-assignments for maximum ++ benefit. (see DEBUG_INFO_VTA) ++ ++config DEBUG_INFO_VTA ++ bool "Enable var-tracking-assignments for debuginfo" ++ depends on DEBUG_INFO ++ help ++ Enable gcc -fvar-tracking-assignments for improved debug ++ information on variable locations in optimized code. Per ++ gcc, DEBUG_INFO_DWARF4 is recommended for best use of VTA. ++ ++ VTA has been implicated in codegen bugs (gcc PR61801, ++ PR61904), so this may deserve some caution. One can set ++ GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle in the ++ environment to automatically compile everything both ways, ++ generating an error if anything differs. + + config ENABLE_WARN_DEPRECATED + bool "Enable __deprecated logic" +-- +2.1.0 + diff --git a/config-generic b/config-generic index 0f4eddca3..e1d549d7a 100644 --- a/config-generic +++ b/config-generic @@ -4372,6 +4372,7 @@ CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0 CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_VTA=y # Revisit both of these options # CONFIG_DEBUG_INFO_SPLIT is not set # CONFIG_DEBUG_INFO_DWARF4 is not set diff --git a/kernel.spec b/kernel.spec index 372fe9110..4c32d6744 100644 --- a/kernel.spec +++ b/kernel.spec @@ -519,6 +519,9 @@ Patch530: silence-fbcon-logo.patch Patch600: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch +#rhbz 1126580 +Patch601: Kbuild-Add-an-option-to-enable-GCC-VTA.patch + Patch800: crash-driver.patch # crypto/ @@ -1278,6 +1281,8 @@ ApplyPatch input-silence-i8042-noise.patch ApplyPatch silence-fbcon-logo.patch # Changes to upstream defaults. +#rhbz 1126580 +ApplyPatch Kbuild-Add-an-option-to-enable-GCC-VTA.patch # /dev/crash driver. ApplyPatch crash-driver.patch @@ -2243,6 +2248,9 @@ fi # ||----w | # || || %changelog +* Tue Dec 16 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580) + * Mon Dec 15 2014 Josh Boyer <jwboyer@fedoraproject.org> - Fix ppc64 boot with smt-enabled=off (rhbz 1173806) - CVE-2014-8133 x86: espfix(64) bypass via set_thread_area and CLONE_SETTLS (rhbz 1172797 1174374) |