From: Felix Fietkau Date: Wed, 21 Jul 2010 15:18:24 +0000 (+0000) Subject: add a build system option for collecting all kernel debug information (including... X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=fd8142403e749b00e701f1c6831e8fc48f19c374;p=openwrt%2Fstaging%2Fldir.git add a build system option for collecting all kernel debug information (including modules) in a tarball SVN-Revision: 22327 --- 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