]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Kbuild: Add option to set -femit-struct-debug-baseonly
authorAndi Kleen <andi@firstfloor.org>
Wed, 14 Jul 2010 13:43:52 +0000 (15:43 +0200)
committerMichal Marek <mmarek@suse.cz>
Wed, 14 Jul 2010 15:21:28 +0000 (17:21 +0200)
Newer gcc has a -femit-struct-debug-baseonly option that dramatically
reduces the size of object files with debug info. What it does
is to only emit type information for structures when the structures
are defined in the same file or in a header file.

This means the type information for most headers are not included.
This is not good when the type information is actually
needed (e.g. with kgdb or systemtap)

But often kernel hackers only care about line numbers and don't
need all the type information anyways. In this case setting
the option can be a big win:

A build dir for a specific x86-64 configuration with gcc 4.5
shrunk from 2.3G to 1.2G. The compilation was also nearly a minute
faster.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
[mmarek: reformatted help text]
Signed-off-by: Michal Marek <mmarek@suse.cz>
Makefile
lib/Kconfig.debug

index dceb4f19f786f57849469ab0fb89ca0497e3ebdc..e1dfb90c6092c9c48854a5ab813293fdfe145570 100644 (file)
--- 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
index 25c3ed594c547966c1c291750d8adeb3b9e5674b..2af5d84ec8249bb1fd67535c3eeaf71a1b5435be 100644 (file)
@@ -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