Skip to contentSkip to conversation

Kbuild: generate debug info in building

PATCH New Wenji Huang 1 participant 1 message Nov 13, 2008 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Kbuild: generate debug info in building

This patch will generate kernel debuginfo in Kbuild when invoking "make
debug_info". The separate debug files are in .debug under building tree.
They can help the cases of requiring debug info for tracing/debug tools,
especially cross-compilation. Moreover, it can simplify or standardize the packaging process for the distributions those will provide kernel-debuginfo.

---
 Makefile                 |   14 ++++++++++++++
 scripts/Makefile.modpost |   14 ++++++++++++++
 2 files changed, 28 insertions(+), 0 deletions(-)
Makefile +14 -0
index 7f9ff9b..eed7510 100644
@@ -814,6 +814,20 @@ define rule_vmlinux-modpost
 	$(Q)echo 'cmd_$@ := $(cmd_vmlinux-modpost)' > $(dot-target).cmd
 endef
 
+ifdef CONFIG_DEBUG_INFO
+quiet_cmd_vmlinux_debug = GEN     $<.debug
+      cmd_vmlinux_debug = mkdir -p .debug;                          \
+                          $(OBJCOPY) --only-keep-debug              \
+                                     $< .debug/$<.debug
+targets += vmlinux.debug
+endif
+
+debug_info: vmlinux FORCE
+ifdef CONFIG_DEBUG_INFO
+	$(call if_changed,vmlinux_debug)
+	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
+endif
+
 # vmlinux image - including updated kernel symbols
 vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o

$(kallsyms.o) FORCE
ifdef CONFIG_HEADERS_CHECK

scripts/Makefile.modpost +14 -0
index f4053dc..0df73b2 100644
@@ -137,6 +137,20 @@ $(modules): %.ko :%.o %.mod.o FORCE
 
 targets += $(modules)
 
+modules-debug := $(modules:.ko=.ko.debug)
+ifdef CONFIG_DEBUG_INFO
+quiet_cmd_debug_ko = GEN     $@
+      cmd_debug_ko = mkdir -p .debug/`dirname $@`;			\
+		     $(OBJCOPY) --only-keep-debug $< .debug/$@
+targets += $(modules-debug)
+endif
+
+debug_info: $(modules-debug) FORCE
+
+$(modules-debug): $(modules) FORCE
+ifdef CONFIG_DEBUG_INFO
+	$(call if_changed,debug_ko)
+endif
 
 # Add FORCE to the prequisites of a target to force it to be always

rebuilt.
#
---------------------------------------------------------------------------

Signature · 1 line
1.5.6