build: fix module symbol collection if build_dir is a symlink
authorJonas Gorski <jonas.gorski@gmail.com>
Fri, 3 Nov 2017 09:59:00 +0000 (10:59 +0100)
committerJonas Gorski <jonas.gorski@gmail.com>
Tue, 7 Nov 2017 21:58:46 +0000 (22:58 +0100)
If PKG_BUILD_DIR contains symlinks, the generated Module.symvers will
contain the resolved paths, not the virtual path with the symlink name.

This breaks the filter for the module's own symbols, so to fix this
ensure we also grep for the resolved path.

Reported-by: Roman Yeryomin <roman@advem.lv>
Tested-by: Roman Yeryomin <roman@advem.lv>
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
include/kernel.mk

index 92136f4..8cb0def 100644 (file)
@@ -135,7 +135,7 @@ endef
 
 define collect_module_symvers
        for subdir in $(PKG_EXTMOD_SUBDIRS); do \
-               grep -F $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
+               grep -F $$$$(readlink -f $(PKG_BUILD_DIR)) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
        done; \
        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