浏览代码

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

SVN-Revision: 22327
Felix Fietkau 15 年之前
父节点
当前提交
fd8142403e
共有 2 个文件被更改,包括 23 次插入0 次删除
  1. 9 0
      Config.in
  2. 14 0
      include/kernel-build.mk

+ 9 - 0
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

+ 14 - 0
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