forked from rpms/kernel
		
	Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580)
This commit is contained in:
		
							parent
							
								
									2b541ad477
								
							
						
					
					
						commit
						401d0d95f4
					
				
							
								
								
									
										92
									
								
								Kbuild-Add-an-option-to-enable-GCC-VTA.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								Kbuild-Add-an-option-to-enable-GCC-VTA.patch
									
									
									
									
									
										Normal file
									
								
							| @ -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 | ||||
| 
 | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user