diff --git a/Makefile b/Makefile
index dceb4f19f786f57849469ab0fb89ca0497e3ebdc..e1dfb90c6092c9c48854a5ab813293fdfe145570 100644
--- a/Makefile
+++ b/Makefile
@@ -557,6 +557,10 @@ KBUILD_CFLAGS	+= -g
 KBUILD_AFLAGS	+= -gdwarf-2
 endif
 
+ifdef CONFIG_DEBUG_INFO_REDUCED
+KBUILD_CFLAGS 	+= $(call cc-option, -femit-struct-debug-baseonly)
+endif
+
 ifdef CONFIG_FUNCTION_TRACER
 KBUILD_CFLAGS	+= -pg
 endif
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 25c3ed594c547966c1c291750d8adeb3b9e5674b..2af5d84ec8249bb1fd67535c3eeaf71a1b5435be 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -595,6 +595,19 @@ config DEBUG_INFO
 
 	  If unsure, say N.
 
+config DEBUG_INFO_REDUCED
+	bool "Reduce debugging information"
+	depends on DEBUG_INFO
+	help
+	  If you say Y here gcc is instructed to generate less debugging
+	  information for structure types. This means that tools that
+	  need full debugging information (like kgdb or systemtap) won't
+	  be happy. But if you merely need debugging information to
+	  resolve line numbers there is no loss. Advantage is that
+	  build directory object sizes shrink dramatically over a full
+	  DEBUG_INFO build and compile times are reduced too.
+	  Only works with newer gcc versions.
+
 config DEBUG_VM
 	bool "Debug VM"
 	depends on DEBUG_KERNEL