lkml.org 
[lkml]   [2022]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 3/7] kbuild: move .vmlinux.objs rule to Makefile.modpost
    Date
    .vmlinux.objs is used by modpost, so scripts/Makefile.modpost is
    a better place to generate it.

    It is used only when CONFIG_MODVERSIONS=y. It should be guarded
    by "ifdef CONFIG_MODVERSIONS".

    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    ---

    (no changes since v1)

    Makefile | 2 +-
    scripts/Makefile.modpost | 30 ++++++++++++++++++++++++++++--
    scripts/link-vmlinux.sh | 18 ------------------
    3 files changed, 29 insertions(+), 21 deletions(-)

    diff --git a/Makefile b/Makefile
    index f793c3b1eaec..92413b6de451 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -1477,7 +1477,7 @@ endif # CONFIG_MODULES
    # Directories & files removed with 'make clean'
    CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \
    modules.builtin modules.builtin.modinfo modules.nsdeps \
    - compile_commands.json .thinlto-cache
    + compile_commands.json .thinlto-cache .vmlinux.objs

    # Directories & files removed with 'make mrproper'
    MRPROPER_FILES += include/config include/generated \
    diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
    index 911606496341..04ad00917b2f 100644
    --- a/scripts/Makefile.modpost
    +++ b/scripts/Makefile.modpost
    @@ -57,6 +57,32 @@ vmlinux.symvers: vmlinux.o

    __modpost: vmlinux.symvers

    +# Generate the list of in-tree objects in vmlinux
    +# ---------------------------------------------------------------------------
    +
    +# This is used to retrieve symbol versions generated by genksyms.
    +ifdef CONFIG_MODVERSIONS
    +vmlinux.symvers: .vmlinux.objs
    +endif
    +
    +# Ignore libgcc.a
    +# Some architectures do '$(CC) --print-libgcc-file-name' to borrow libgcc.a
    +# from the toolchain, but there is no EXPORT_SYMBOL in it.
    +
    +quiet_cmd_vmlinux_objs = GEN $@
    + cmd_vmlinux_objs = \
    + for f in $(real-prereqs); do \
    + case $${f} in \
    + *libgcc.a) ;; \
    + *.a) $(AR) t $${f} ;; \
    + *) echo $${f} ;; \
    + esac \
    + done > $@
    +
    +targets += .vmlinux.objs
    +.vmlinux.objs: $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS) FORCE
    + $(call if_changed,vmlinux_objs)
    +
    else

    ifeq ($(KBUILD_EXTMOD),)
    @@ -134,6 +160,8 @@ ifneq ($(KBUILD_MODPOST_NOFINAL),1)
    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modfinal
    endif

    +endif
    +
    PHONY += FORCE
    FORCE:

    @@ -141,6 +169,4 @@ existing-targets := $(wildcard $(sort $(targets)))

    -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)

    -endif
    -
    .PHONY: $(PHONY)
    diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
    index 8d982574145a..161bca64e8aa 100755
    --- a/scripts/link-vmlinux.sh
    +++ b/scripts/link-vmlinux.sh
    @@ -199,7 +199,6 @@ cleanup()
    rm -f System.map
    rm -f vmlinux
    rm -f vmlinux.map
    - rm -f .vmlinux.objs
    rm -f .vmlinux.export.c
    }

    @@ -218,23 +217,6 @@ fi
    #link vmlinux.o
    ${MAKE} -f "${srctree}/scripts/Makefile.vmlinux_o"

    -# Generate the list of in-tree objects in vmlinux
    -#
    -# This is used to retrieve symbol versions generated by genksyms.
    -for f in ${KBUILD_VMLINUX_OBJS} ${KBUILD_VMLINUX_LIBS}; do
    - case ${f} in
    - *libgcc.a)
    - # Some architectures do '$(CC) --print-libgcc-file-name' to
    - # borrow libgcc.a from the toolchain.
    - # There is no EXPORT_SYMBOL in external objects. Ignore this.
    - ;;
    - *.a)
    - ${AR} t ${f} ;;
    - *)
    - echo ${f} ;;
    - esac
    -done > .vmlinux.objs
    -
    # modpost vmlinux.o to check for section mismatches
    ${MAKE} -f "${srctree}/scripts/Makefile.modpost" MODPOST_VMLINUX=1

    --
    2.34.1
    \
     
     \ /
      Last update: 2022-09-24 20:21    [W:4.176 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site