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 | ||
51 | # arm64 lld | |
52 | / __AArch64ADRPThunk_/d | |
53 | ||
54 | # arm lld | |
55 | / __ARMV5PILongThunk_/d | |
56 | / __ARMV7PILongThunk_/d | |
57 | / __ThumbV7PILongThunk_/d | |
58 | ||
59 | # mips lld | |
60 | / __LA25Thunk_/d | |
61 | / __microLA25Thunk_/d | |
62 | ||
63 | # CFI type identifiers | |
64 | / __kcfi_typeid_/d | |
71025b85 PCT |
65 | / __kvm_nvhe___kcfi_typeid_/d |
66 | / __pi___kcfi_typeid_/d | |
320e7c9d | 67 | |
c4802044 MY |
68 | # CRC from modversions |
69 | / __crc_/d | |
70 | ||
71 | # EXPORT_SYMBOL (symbol name) | |
72 | / __kstrtab_/d | |
73 | ||
74 | # EXPORT_SYMBOL (namespace) | |
75 | / __kstrtabns_/d | |
76 | ||
320e7c9d MY |
77 | # --------------------------------------------------------------------------- |
78 | # Ignored suffixes | |
79 | # (do not forget '$' after each pattern) | |
80 | ||
81 | # arm | |
82 | /_from_arm$/d | |
83 | /_from_thumb$/d | |
84 | /_veneer$/d | |
85 | ||
c4802044 MY |
86 | # --------------------------------------------------------------------------- |
87 | # Ignored symbols (exact match) | |
88 | # (do not forget a space before and '$' after each pattern) | |
89 | ||
90 | # for LoongArch? | |
91 | / L0$/d | |
ca09bf48 | 92 | |
320e7c9d MY |
93 | # ppc |
94 | / _SDA_BASE_$/d | |
95 | / _SDA2_BASE_$/d | |
96 | ||
97 | # --------------------------------------------------------------------------- | |
98 | # Ignored patterns | |
99 | # (symbols that contain the pattern are ignored) | |
100 | ||
101 | # ppc stub | |
102 | /\.long_branch\./d | |
103 | /\.plt_branch\./d | |
104 | ||
ca09bf48 MY |
105 | # --------------------------------------------------------------------------- |
106 | # Ignored kallsyms symbols | |
107 | # | |
108 | # If the 3rd parameter exists, symbols from it will be omitted from the output. | |
109 | # This makes kallsyms have the identical symbol lists in the step 1 and 2. | |
110 | # Without this, the step2 would get new symbols generated by scripts/kallsyms.c | |
111 | # when CONFIG_KALLSYMS_ALL is enabled. That might require one more pass. | |
112 | $(if [ $# -ge 3 ]; then ${NM} ${3} | sed -n '/ U /!s:.* \([^ ]*\)$:/ \1$/d:p'; fi) | |
c4802044 | 113 | " |