Commit ca09bf48 authored by Masahiro Yamada's avatar Masahiro Yamada

scripts/kallsyms: exclude symbols generated by itself dynamically

Drop the symbols generated by scripts/kallsyms itself automatically
instead of maintaining the symbol list manually.

Pass the kallsyms object from the previous kallsyms step (if it exists)
as the third parameter of scripts/mksysmap, which will weed out the
generated symbols from the input to the next kallsyms step.
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent c4802044
...@@ -104,22 +104,6 @@ static bool is_ignored_symbol(const char *name, char type) ...@@ -104,22 +104,6 @@ static bool is_ignored_symbol(const char *name, char type)
{ {
/* Symbol names that exactly match to the following are ignored.*/ /* Symbol names that exactly match to the following are ignored.*/
static const char * const ignored_symbols[] = { static const char * const ignored_symbols[] = {
/*
* Symbols which vary between passes. Passes 1 and 2 must have
* identical symbol lists. The kallsyms_* symbols below are
* only added after pass 1, they would be included in pass 2
* when --all-symbols is specified so exclude them to get a
* stable symbol list.
*/
"kallsyms_addresses",
"kallsyms_offsets",
"kallsyms_relative_base",
"kallsyms_num_syms",
"kallsyms_names",
"kallsyms_markers",
"kallsyms_token_table",
"kallsyms_token_index",
"kallsyms_seqs_of_names",
/* Exclude linker generated symbols which vary between passes */ /* Exclude linker generated symbols which vary between passes */
"_SDA_BASE_", /* ppc */ "_SDA_BASE_", /* ppc */
"_SDA2_BASE_", /* ppc */ "_SDA2_BASE_", /* ppc */
......
...@@ -174,7 +174,7 @@ kallsyms_step() ...@@ -174,7 +174,7 @@ kallsyms_step()
kallsyms_S=${kallsyms_vmlinux}.S kallsyms_S=${kallsyms_vmlinux}.S
vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o} vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o}
mksysmap ${kallsyms_vmlinux} ${kallsyms_vmlinux}.syms mksysmap ${kallsyms_vmlinux} ${kallsyms_vmlinux}.syms ${kallsymso_prev}
kallsyms ${kallsyms_vmlinux}.syms ${kallsyms_S} kallsyms ${kallsyms_vmlinux}.syms ${kallsyms_S}
info AS ${kallsyms_S} info AS ${kallsyms_S}
...@@ -188,7 +188,7 @@ kallsyms_step() ...@@ -188,7 +188,7 @@ kallsyms_step()
mksysmap() mksysmap()
{ {
info NM ${2} info NM ${2}
${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2} ${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2} ${3}
} }
sorttable() sorttable()
...@@ -277,7 +277,7 @@ if is_enabled CONFIG_DEBUG_INFO_BTF && is_enabled CONFIG_BPF; then ...@@ -277,7 +277,7 @@ if is_enabled CONFIG_DEBUG_INFO_BTF && is_enabled CONFIG_BPF; then
${RESOLVE_BTFIDS} vmlinux ${RESOLVE_BTFIDS} vmlinux
fi fi
mksysmap vmlinux System.map mksysmap vmlinux System.map ${kallsymso}
if is_enabled CONFIG_BUILDTIME_TABLE_SORT; then if is_enabled CONFIG_BUILDTIME_TABLE_SORT; then
info SORTTAB vmlinux info SORTTAB vmlinux
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# tools to retrieve the actual addresses of symbols in the kernel. # tools to retrieve the actual addresses of symbols in the kernel.
# #
# Usage # Usage
# mksysmap vmlinux System.map # mksysmap vmlinux System.map [exclude]
##### #####
...@@ -52,4 +52,13 @@ ${NM} -n ${1} | sed >${2} -e " ...@@ -52,4 +52,13 @@ ${NM} -n ${1} | sed >${2} -e "
# for LoongArch? # for LoongArch?
/ L0$/d / L0$/d
# ---------------------------------------------------------------------------
# Ignored kallsyms symbols
#
# If the 3rd parameter exists, symbols from it will be omitted from the output.
# This makes kallsyms have the identical symbol lists in the step 1 and 2.
# Without this, the step2 would get new symbols generated by scripts/kallsyms.c
# when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass.
$(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi)
" "
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment