debug: Add CONFIG_READABLE_ASM
authorAndi Kleen <ak@linux.intel.com>
Wed, 28 Mar 2012 18:51:18 +0000 (11:51 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 30 Mar 2012 17:15:21 +0000 (10:15 -0700)
Add a config option to disable various gcc compiler optimizations that
make assembler listings much harder to read. This is everything that reorders
code significantly or creates partial functions.

This is mainly to keep kernel hackers sane.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/r/1332960678-11879-2-git-send-email-andi@firstfloor.org
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Makefile
lib/Kconfig.debug

index 1932984478c177dc1905470252c65afa56f07559..6f7328bca9c4270b969dd7e4a2702e1657bc796a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -564,6 +564,16 @@ else
 KBUILD_CFLAGS  += -O2
 endif
 
+ifdef CONFIG_READABLE_ASM
+# Disable optimizations that make assembler listings hard to read.
+# reorder blocks reorders the control in the function
+# ipa clone creates specialized cloned functions
+# partial inlining inlines only parts of functions
+KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \
+                 $(call cc-option,-fno-ipa-cp-clone,) \
+                 $(call cc-option,-fno-partial-inlining)
+endif
+
 include $(srctree)/arch/$(SRCARCH)/Makefile
 
 ifneq ($(CONFIG_FRAME_WARN),0)
index 6777153f18f31c3318b94283e986b5f2866ad783..4d3cbbbe4516a2ebf5dd383557ee620f7bf12d6a 100644 (file)
@@ -70,6 +70,15 @@ config STRIP_ASM_SYMS
          that look like '.Lxxx') so they don't pollute the output of
          get_wchan() and suchlike.
 
+config READABLE_ASM
+        bool "Generate readable assembler code"
+        depends on DEBUG_KERNEL
+        help
+          Disable some compiler optimizations that tend to generate human unreadable
+          assembler output. This may make the kernel slightly slower, but it helps
+          to keep kernel developers who have to stare a lot at assembler listings
+          sane.
+
 config UNUSED_SYMBOLS
        bool "Enable unused/obsolete exported symbols"
        default y if X86
This page took 0.046231 seconds and 5 git commands to generate.