We have a defunct modules_install target, which fails when called. Fix it, so it actually installs stripped modules.
This is important, because we don't want barebox to attempt relocation the .debug sections as it doesn't support all relocations that can occur there. Note that unlike Linux, we always strip. Linux on the other hand has a check that skips relocation of non-alloc segments and we may want to add that too in future, but only after switching to barebox proper being linked in PBL as proper ELF. Co-developed-by: Claude <[email protected]> Signed-off-by: Ahmad Fatoum <[email protected]> --- Makefile | 15 ++------- scripts/Makefile.modinst | 67 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 scripts/Makefile.modinst diff --git a/Makefile b/Makefile index 1a5f21b66ebb..b6023dc4ff2c 100644 --- a/Makefile +++ b/Makefile @@ -448,7 +448,6 @@ LEX = flex YACC = bison AWK = awk GENKSYMS = scripts/genksyms/genksyms -DEPMOD = /sbin/depmod KALLSYMS = scripts/kallsyms SCONFIGPOST = scripts/sconfig/sconfigpost PERL = perl @@ -1317,18 +1316,13 @@ modules_prepare: prepare scripts # Target to install modules PHONY += modules_install -modules_install: _modinst_ _modinst_post +modules_install: _modinst_ PHONY += _modinst_ _modinst_: - @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \ - echo "Warning: you may need to install module-init-tools"; \ - echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\ - sleep 1; \ - fi - @rm -rf $(MODLIB)/kernel + @rm -rf $(MODLIB)/barebox @rm -f $(MODLIB)/source - @mkdir -p $(MODLIB)/kernel + @mkdir -p $(MODLIB)/barebox @ln -s $(srctree) $(MODLIB)/source @if [ ! $(objtree) -ef $(MODLIB)/build ]; then \ rm -f $(MODLIB)/build ; \ @@ -1346,9 +1340,6 @@ depmod_opts := else depmod_opts := -b $(INSTALL_MOD_PATH) -r endif -PHONY += _modinst_post -_modinst_post: _modinst_ - if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi else # CONFIG_MODULES diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst new file mode 100644 index 000000000000..6cb9b6ccaa1e --- /dev/null +++ b/scripts/Makefile.modinst @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: GPL-2.0 +# ========================================================================== +# Installing modules +# ========================================================================== + +PHONY := __modinst +__modinst: + +include $(objtree)/include/config/auto.conf +include $(srctree)/scripts/Kbuild.include + +install-y := + +# remove the old directory +$(shell rm -fr $(MODLIB)/barebox) + +dst := $(MODLIB)/barebox + +# Find all .ko files in the build tree +modules := $(shell find $(objtree) -name '*.ko' -not -path '$(MODLIB)/*' 2>/dev/null) +modules-dst := $(addprefix $(dst)/, $(patsubst $(objtree)/%,%,$(modules))) + +install-$(CONFIG_MODULES) += $(modules-dst) + +__modinst: $(install-y) + @: + +# +# Installation +# +quiet_cmd_install = INSTALL $@ + cmd_install = mkdir -p $(dir $@) && cp $< $@ + +INSTALL_MOD_STRIP ?= 1 + +# Strip +# +# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they +# are installed. If INSTALL_MOD_STRIP is '1', then the default option +# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used +# as the options to the strip command. +ifdef INSTALL_MOD_STRIP + +ifeq ($(INSTALL_MOD_STRIP),1) +strip-option := --strip-debug +else +strip-option := $(INSTALL_MOD_STRIP) +endif + +quiet_cmd_strip = STRIP $@ + cmd_strip = $(STRIP) $(strip-option) $@ + +else + +quiet_cmd_strip = + cmd_strip = : + +endif + +$(dst)/%.ko: $(objtree)/%.ko FORCE + $(call cmd,install) + $(call cmd,strip) + +PHONY += FORCE +FORCE: + +.PHONY: $(PHONY) -- 2.47.3
