Skip to content

Commit

Permalink
kbuild: Parameterize kallsyms generation and correct reporting
Browse files Browse the repository at this point in the history
When kallsyms generation happens, temporary vmlinux outputs are linked
but the quiet make output didn't report it, giving the impression that
the prior command is taking longer than expected.

Instead, report the linking step explicitly. While at it, this
consolidates the repeated "kallsyms generation step" into a single
function and removes the existing copy/pasting.

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
  • Loading branch information
Kees Cook authored and Masahiro Yamada committed Aug 21, 2019
1 parent c7c0eec commit 8959e39
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions scripts/link-vmlinux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ modpost_link()
# ${2} - output file
vmlinux_link()
{
info LD ${2}
local lds="${objtree}/${KBUILD_LDS}"
local objects

Expand Down Expand Up @@ -138,6 +139,18 @@ kallsyms()
${CC} ${aflags} -c -o ${2} ${afile}
}

# Perform one step in kallsyms generation, including temporary linking of
# vmlinux.
kallsyms_step()
{
kallsymso_prev=${kallsymso}
kallsymso=.tmp_kallsyms${1}.o
kallsyms_vmlinux=.tmp_vmlinux${1}

vmlinux_link "${kallsymso_prev}" ${kallsyms_vmlinux}
kallsyms ${kallsyms_vmlinux} ${kallsymso}
}

# Create map file with all symbols from ${1}
# See mksymap for additional details
mksysmap()
Expand Down Expand Up @@ -216,6 +229,7 @@ info MODINFO modules.builtin.modinfo
${OBJCOPY} -j .modinfo -O binary vmlinux.o modules.builtin.modinfo

kallsymso=""
kallsymso_prev=""
kallsyms_vmlinux=""
if [ -n "${CONFIG_KALLSYMS}" ]; then

Expand All @@ -242,32 +256,18 @@ if [ -n "${CONFIG_KALLSYMS}" ]; then
# a) Verify that the System.map from vmlinux matches the map from
# ${kallsymso}.

kallsymso=.tmp_kallsyms2.o
kallsyms_vmlinux=.tmp_vmlinux2

# step 1
vmlinux_link "" .tmp_vmlinux1
kallsyms .tmp_vmlinux1 .tmp_kallsyms1.o

# step 2
vmlinux_link .tmp_kallsyms1.o .tmp_vmlinux2
kallsyms .tmp_vmlinux2 .tmp_kallsyms2.o
kallsyms_step 1
kallsyms_step 2

# step 3
size1=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" .tmp_kallsyms1.o)
size2=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" .tmp_kallsyms2.o)
size1=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso_prev})
size2=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso})

if [ $size1 -ne $size2 ] || [ -n "${KALLSYMS_EXTRA_PASS}" ]; then
kallsymso=.tmp_kallsyms3.o
kallsyms_vmlinux=.tmp_vmlinux3

vmlinux_link .tmp_kallsyms2.o .tmp_vmlinux3

kallsyms .tmp_vmlinux3 .tmp_kallsyms3.o
kallsyms_step 3
fi
fi

info LD vmlinux
vmlinux_link "${kallsymso}" vmlinux

if [ -n "${CONFIG_DEBUG_INFO_BTF}" ]; then
Expand Down

0 comments on commit 8959e39

Please sign in to comment.