sdk: fix building external modules when CONFIG_STACK_VALIDATION=y
[openwrt/openwrt.git] / target / sdk / Makefile
index 95ac3be197588ff98c8c2b7daa8c8c850a91d22c..3b860db93a28f0a8aa1144443a6d65efda106c61 100644 (file)
@@ -94,6 +94,14 @@ $(BIN_DIR)/$(SDK_NAME).tar.xz: clean
        $(TAR) -cf - -C $(TOPDIR) $(KDIR_BASE)/tools/usb/usbip/ | \
                $(TAR) -xf - -C $(SDK_BUILD_DIR)
 
        $(TAR) -cf - -C $(TOPDIR) $(KDIR_BASE)/tools/usb/usbip/ | \
                $(TAR) -xf - -C $(SDK_BUILD_DIR)
 
+       # Copy objtool executables.  They are required for building external
+       # modules if "Compile-time stack metadata validation" is enabled.
+       if grep -q '^CONFIG_STACK_VALIDATION=y' $(LINUX_DIR)/.config; then \
+               $(TAR) -cf - -C $(TOPDIR) \
+                               `cd $(TOPDIR); find $(KDIR_BASE)/tools/objtool -type f -executable` | \
+                       $(TAR) -xf - -C $(SDK_BUILD_DIR); \
+       fi
+
        (cd $(SDK_BUILD_DIR); find $(STAGING_SUBDIR_HOST)/bin $(STAGING_SUBDIR_HOST)/usr/bin \
                $(STAGING_SUBDIR_TOOLCHAIN)/bin $(STAGING_SUBDIR_TOOLCHAIN)/*/bin $(STAGING_SUBDIR_TOOLCHAIN)/libexec \
                -type f | $(XARGS) $(SCRIPT_DIR)/bundle-libraries.sh $(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST))
        (cd $(SDK_BUILD_DIR); find $(STAGING_SUBDIR_HOST)/bin $(STAGING_SUBDIR_HOST)/usr/bin \
                $(STAGING_SUBDIR_TOOLCHAIN)/bin $(STAGING_SUBDIR_TOOLCHAIN)/*/bin $(STAGING_SUBDIR_TOOLCHAIN)/libexec \
                -type f | $(XARGS) $(SCRIPT_DIR)/bundle-libraries.sh $(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST))