Thread (3 messages) 3 messages, 2 authors, 2021-03-05

Re: [PATCH] kbuild: apply fixdep logic to link-vmlinux.sh

From: Masahiro Yamada <masahiroy@kernel.org>
Date: 2021-03-05 14:09:50
Also in: lkml
Subsystem: kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers: Nathan Chancellor, Nicolas Schier, Linus Torvalds

On Fri, Mar 5, 2021 at 10:50 PM Masahiro Yamada [off-list ref] wrote:
On Fri, Mar 5, 2021 at 7:02 PM Rasmus Villemoes
[off-list ref] wrote:
quoted
The patch adding CONFIG_VMLINUX_MAP revealed a small defect in the
build system: link-vmlinux.sh takes decisions based on CONFIG_*
options, but changing one of those does not always lead to vmlinux
being linked again.

For most of the CONFIG_* knobs referenced previously, this has
probably been hidden by those knobs also affecting some object file,
hence indirectly also vmlinux.

But CONFIG_VMLINUX_MAP is only handled inside link-vmlinux.sh, and
changing CONFIG_VMLINUX_MAP=n to CONFIG_VMLINUX_MAP=y does not cause
the build system to re-link (and hence have vmlinux.map
emitted). Since that map file is mostly a debugging aid, this is
merely a nuisance which is easily worked around by just deleting
vmlinux and building again.

But one could imagine other (possibly future) CONFIG options that
actually do affect the vmlinux binary but which are not captured
through some object file dependency.

To fix this, make link-vmlinux.sh emit a .vmlinux.d file in the same
format as the dependency files generated by gcc, and apply the fixdep
logic to that. I've tested that this correctly works with both in-tree
and out-of-tree builds.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
I moved the code to the last line of scripts/link-vmlinux.sh,
and added a comment, otherwise, the intent is obscure.


diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index 7d4b7c6f01e8..e9516bdfcc6f 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -422,7 +422,6 @@ if [ -n "${CONFIG_KALLSYMS}" ]; then
 fi

 vmlinux_link vmlinux "${kallsymso}" ${btf_vmlinux_bin_o}
-echo "vmlinux: $0" > .vmlinux.d

 # fill in BTF IDs
 if [ -n "${CONFIG_DEBUG_INFO_BTF}" -a -n "${CONFIG_BPF}" ]; then
@@ -451,3 +450,6 @@ if [ -n "${CONFIG_KALLSYMS}" ]; then
                exit 1
        fi
 fi
+
+# For fixdep
+echo "vmlinux: $0" > .vmlinux.d


-- 
Best Regards
Masahiro Yamada
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help