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

commit72d24accf0
upstream. When System.map was generated, the kernel used mksysmap to filter the kernel symbols, but all the symbols with the second letter 'L' in the kernel were filtered out, not just the symbols starting with 'dot + L'. For example: ashimida@ubuntu:~/linux$ cat System.map |grep ' .L' ashimida@ubuntu:~/linux$ nm -n vmlinux |grep ' .L' ffff0000088028e0 t bLength_show ...... ffff0000092e0408 b PLLP_OUTC_lock ffff0000092e0410 b PLLP_OUTA_lock The original intent should be to filter out all local symbols starting with '.L', so the dot should be escaped. Fixes:00902e9847
("mksysmap: Add h8300 local symbol pattern") Signed-off-by: ashimida <ashimida@linux.alibaba.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
1.3 KiB
Executable File
1.3 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
Generate System.map (actual filename passed as second argument)
$NM produces the following output:
f0081e80 T alloc_vfsmnt
The second row specify the type of the symbol:
A = Absolute
B = Uninitialised data (.bss)
C = Common symbol
D = Initialised data
G = Initialised data for small objects
I = Indirect reference to another symbol
N = Debugging symbol
R = Read only
S = Uninitialised data for small objects
T = Text code symbol
U = Undefined symbol
V = Weak symbol
W = Weak symbol
Corresponding small letters are local symbols
For System.map filter away:
a - local absolute symbols
U - undefined global symbols
N - debugging symbols
w - local weak symbols
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'. _crc are 'A' and placed in the middle
so we just ignore them to let readprofile continue to work.
(At least sparc64 has _crc in the middle).
$NM -n $1 | grep -v '( [aNUw] )|(_crc)|( $[adt])|( .L)' > $2