mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00

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: Masahiro Yamada <masahiroy@kernel.org>
1.8 KiB
Executable File
1.8 KiB
Executable File
#!/bin/sh -x
Based on the vmlinux file create the System.map file
System.map is used by module-init tools and some debugging
tools to retrieve the actual addresses of symbols in the kernel.
Usage
mksysmap vmlinux System.map [exclude]
Generate System.map (actual filename passed as second argument)
The following refers to the symbol type as per nm(1).
readprofile starts reading symbols when _stext is found, and
continue until it finds a symbol which is not either of 'T', 't',
'W' or 'w'.
${NM} -n ${1} | sed >${2} -e "
---------------------------------------------------------------------------
Ignored symbol types
a: local absolute symbols
N: debugging symbols
U: undefined global symbols
w: local weak symbols
/ [aNUw] /d
---------------------------------------------------------------------------
Ignored prefixes
(do not forget a space before each pattern)
local symbols for ARM, MIPS, etc.
/ $/d
local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
/ .L/d
CRC from modversions
/ _crc/d
EXPORT_SYMBOL (symbol name)
/ _kstrtab/d
EXPORT_SYMBOL (namespace)
/ _kstrtabns/d
---------------------------------------------------------------------------
Ignored symbols (exact match)
(do not forget a space before and '$' after each pattern)
for LoongArch?
/ 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)
"