add a build system option for collecting all kernel debug information (including...
authorFelix Fietkau <nbd@openwrt.org>
Wed, 21 Jul 2010 15:18:24 +0000 (15:18 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 21 Jul 2010 15:18:24 +0000 (15:18 +0000)
SVN-Revision: 22327

Config.in
include/kernel-build.mk

index f9375be0a21cf7ba7cd8badb1fc2c58b21e04c6b..61a46b453205a63612f5feb43d5e0b4415af4e45 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -155,6 +155,15 @@ menu "Global build settings"
                help
                        This removes all ipkg/opkg status data files from the target directory before building the root fs
 
+       config COLLECT_KERNEL_DEBUG
+               bool
+               prompt "Colllect kernel debug information"
+               select KERNEL_DEBUG_INFO
+               default n
+               help
+                       This collects debugging symbols from the kernel and all compiled modules.
+                       Useful for release builds, so that kernel issues can be debugged offline later.
+
        comment "Kernel build options"
 
        config KERNEL_DEBUG_FS
index 7c5d1fbe9cd5b9a88c759ecfda8dfe5f778e6146..648e65848a41cc8e78ad61949a682a34a3594d66 100644 (file)
@@ -44,6 +44,19 @@ define Download/kernel
   MD5SUM:=$(LINUX_KERNEL_MD5SUM)
 endef
 
+ifdef CONFIG_COLLECT_KERNEL_DEBUG
+  define Kernel/CollectDebug
+       rm -rf $(KERNEL_BUILD_DIR)/debug
+       mkdir -p $(KERNEL_BUILD_DIR)/debug/modules
+       $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/debug/
+       -$(CP) \
+               $(STAGING_DIR_ROOT)/lib/modules/$(LINUX_VERSION)/* \
+               $(KERNEL_BUILD_DIR)/debug/modules/
+       $(FIND) $(KERNEL_BUILD_DIR)/debug -type f | $(XARGS) $(KERNEL_CROSS)strip --only-keep-debug
+       $(TAR) c -C $(KERNEL_BUILD_DIR) debug | bzip2 -c -9 > $(BIN_DIR)/kernel-debug.tar.bz2
+  endef
+endif
+
 define BuildKernel
   $(if $(QUILT),$(Build/Quilt))
   $(if $(LINUX_SITE),$(call Download,kernel))
@@ -86,6 +99,7 @@ define BuildKernel
 
   $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) $(if $(CONFIG_STRIP_KERNEL_EXPORTS),$(KERNEL_BUILD_DIR)/symtab.h) FORCE
        $(Kernel/CompileImage)
+       $(Kernel/CollectDebug)
        touch $$@
        
   mostlyclean: FORCE