浏览代码

build: fix external module symbol collection if build_dir is a symlink

e26ffb31dfa30d498b963a86d231835e3af7d3df fixed only embedded modules
symbol collection. If we are building external modules, like broadcom-wl
or lantiq dsl stuff then modules which do EXPORT_SYMBOL have unresolved
paths in Module.symvers and external module which depend on other
external modules will have empty dependencies, leading to broken
module loading.
This was discussed on IRC with Jonas some time ago.
Fix this by handling both resolved and unresolved paths.

Fixes: e26ffb31dfa3 ("build: fix module symbol collection if build_dir is a symlink")
Signed-off-by: Roman Yeryomin <[email protected]>
[[email protected]: add appropriate fixes tag]
Signed-off-by: Jonas Gorski <[email protected]>
Roman Yeryomin 6 年之前
父节点
当前提交
94464cfca2
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      include/kernel.mk

+ 4 - 1
include/kernel.mk

@@ -141,7 +141,10 @@ endef
 
 
 define collect_module_symvers
 define collect_module_symvers
 	for subdir in $(PKG_EXTMOD_SUBDIRS); do \
 	for subdir in $(PKG_EXTMOD_SUBDIRS); do \
-		grep -F $$$$(readlink -f $(PKG_BUILD_DIR)) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
+		realdir=$$$$(readlink -f $(PKG_BUILD_DIR)); \
+		grep -F $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
+		[ "$(PKG_BUILD_DIR)" = "$$$$realdir" ] || \
+			grep -F $$$$realdir $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
 	done; \
 	done; \
 	sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \
 	sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \
 	mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers
 	mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers