From 0bc00cc46087df6ff79a7522242cf6a1bbf95ead Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 21 Jul 2010 15:18:24 +0000 Subject: [PATCH] add a build system option for collecting all kernel debug information (including modules) in a tarball git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22327 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Config.in | 9 +++++++++ include/kernel-build.mk | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Config.in b/Config.in index f9375be0a2..61a46b4532 100644 --- 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 diff --git a/include/kernel-build.mk b/include/kernel-build.mk index 7c5d1fbe9c..648e65848a 100644 --- a/include/kernel-build.mk +++ b/include/kernel-build.mk @@ -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