Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #!/bin/sh -x |
2 | # Based on the vmlinux file create the System.map file | |
3 | # System.map is used by module-init tools and some debugging | |
943ffb58 | 4 | # tools to retrieve the actual addresses of symbols in the kernel. |
1da177e4 LT |
5 | # |
6 | # Usage | |
ca09bf48 | 7 | # mksysmap vmlinux System.map [exclude] |
1da177e4 LT |
8 | |
9 | ||
10 | ##### | |
11 | # Generate System.map (actual filename passed as second argument) | |
e9f76363 | 12 | # The following refers to the symbol type as per nm(1). |
1da177e4 | 13 | |
1da177e4 LT |
14 | # readprofile starts reading symbols when _stext is found, and |
15 | # continue until it finds a symbol which is not either of 'T', 't', | |
c1346169 MY |
16 | # 'W' or 'w'. |
17 | # | |
c4802044 MY |
18 | |
19 | ${NM} -n ${1} | sed >${2} -e " | |
20 | # --------------------------------------------------------------------------- | |
21 | # Ignored symbol types | |
a2833d1b | 22 | # |
c4802044 MY |
23 | |
24 | # a: local absolute symbols | |
25 | # N: debugging symbols | |
26 | # U: undefined global symbols | |
27 | # w: local weak symbols | |
28 | / [aNUw] /d | |
29 | ||
30 | # --------------------------------------------------------------------------- | |
31 | # Ignored prefixes | |
32 | # (do not forget a space before each pattern) | |
33 | ||
34 | # local symbols for ARM, MIPS, etc. | |
ec336aa8 | 35 | / \\$/d |
c4802044 MY |
36 | |
37 | # local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc. | |
38 | / \.L/d | |
39 | ||
320e7c9d MY |
40 | # arm64 EFI stub namespace |
41 | / __efistub_/d | |
42 | ||
200dd957 PCT |
43 | # arm64 local symbols in PIE namespace |
44 | / __pi_\\$/d | |
45 | / __pi_\.L/d | |
46 | ||
320e7c9d | 47 | # arm64 local symbols in non-VHE KVM namespace |
ec336aa8 | 48 | / __kvm_nvhe_\\$/d |
320e7c9d MY |
49 | / __kvm_nvhe_\.L/d |
50 | ||
a951884d AB |
51 | # lld arm/aarch64/mips thunks |
52 | / __[[:alnum:]]*Thunk_/d | |
320e7c9d MY |
53 | |
54 | # CFI type identifiers | |
55 | / __kcfi_typeid_/d | |
71025b85 PCT |
56 | / __kvm_nvhe___kcfi_typeid_/d |
57 | / __pi___kcfi_typeid_/d | |
320e7c9d | 58 | |
c4802044 MY |
59 | # CRC from modversions |
60 | / __crc_/d | |
61 | ||
62 | # EXPORT_SYMBOL (symbol name) | |
63 | / __kstrtab_/d | |
64 | ||
65 | # EXPORT_SYMBOL (namespace) | |
66 | / __kstrtabns_/d | |
67 | ||
320e7c9d MY |
68 | # --------------------------------------------------------------------------- |
69 | # Ignored suffixes | |
70 | # (do not forget '$' after each pattern) | |
71 | ||
72 | # arm | |
73 | /_from_arm$/d | |
74 | /_from_thumb$/d | |
75 | /_veneer$/d | |
76 | ||
c4802044 MY |
77 | # --------------------------------------------------------------------------- |
78 | # Ignored symbols (exact match) | |
79 | # (do not forget a space before and '$' after each pattern) | |
80 | ||
81 | # for LoongArch? | |
82 | / L0$/d | |
ca09bf48 | 83 | |
320e7c9d MY |
84 | # ppc |
85 | / _SDA_BASE_$/d | |
86 | / _SDA2_BASE_$/d | |
87 | ||
88 | # --------------------------------------------------------------------------- | |
89 | # Ignored patterns | |
90 | # (symbols that contain the pattern are ignored) | |
91 | ||
92 | # ppc stub | |
93 | /\.long_branch\./d | |
94 | /\.plt_branch\./d | |
95 | ||
ca09bf48 MY |
96 | # --------------------------------------------------------------------------- |
97 | # Ignored kallsyms symbols | |
98 | # | |
99 | # If the 3rd parameter exists, symbols from it will be omitted from the output. | |
100 | # This makes kallsyms have the identical symbol lists in the step 1 and 2. | |
101 | # Without this, the step2 would get new symbols generated by scripts/kallsyms.c | |
102 | # when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass. | |
103 | $(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi) | |
c4802044 | 104 | " |