add a build system option for collecting all kernel debug information (including modules) in a tarball

SVN-Revision: 22327
This commit is contained in:
Felix Fietkau 2010-07-21 15:18:24 +00:00
parent 91edb99017
commit fd8142403e
2 changed files with 23 additions and 0 deletions

View file

@ -155,6 +155,15 @@ menu "Global build settings"
help help
This removes all ipkg/opkg status data files from the target directory before building the root fs 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" comment "Kernel build options"
config KERNEL_DEBUG_FS config KERNEL_DEBUG_FS

View file

@ -44,6 +44,19 @@ define Download/kernel
MD5SUM:=$(LINUX_KERNEL_MD5SUM) MD5SUM:=$(LINUX_KERNEL_MD5SUM)
endef 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 define BuildKernel
$(if $(QUILT),$(Build/Quilt)) $(if $(QUILT),$(Build/Quilt))
$(if $(LINUX_SITE),$(call Download,kernel)) $(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 $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) $(if $(CONFIG_STRIP_KERNEL_EXPORTS),$(KERNEL_BUILD_DIR)/symtab.h) FORCE
$(Kernel/CompileImage) $(Kernel/CompileImage)
$(Kernel/CollectDebug)
touch $$@ touch $$@
mostlyclean: FORCE mostlyclean: FORCE