lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100714134352.GA10341@basil.fritz.box>
Date:	Wed, 14 Jul 2010 15:43:52 +0200
From:	Andi Kleen <andi@...stfloor.org>
To:	mmarek@...e.cz, linux-kbuild@...r.kernel.org,
	linux-kernel@...r.kernel.org, ak@...ux.intel.com
Subject: [PATCH] Kbuild: Add option to set -femit-struct-debug-baseonly 

Kbuild: Add option to set -femit-struct-debug-baseonly 

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@...ux.intel.com>

---
 Makefile          |    4 ++++
 lib/Kconfig.debug |   12 ++++++++++++
 2 files changed, 16 insertions(+)

Index: linux-2.6.34-ak/Makefile
===================================================================
--- linux-2.6.34-ak.orig/Makefile
+++ linux-2.6.34-ak/Makefile
@@ -554,6 +554,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: linux-2.6.34-ak/lib/Kconfig.debug
===================================================================
--- linux-2.6.34-ak.orig/lib/Kconfig.debug
+++ linux-2.6.34-ak/lib/Kconfig.debug
@@ -616,6 +616,18 @@ 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ