xref: /linux/scripts/mksysmap (revision 5ab23c7923a1d2ae1890026866a2d8506b010a4a)
1b18b0470SMasahiro Yamada#!/bin/sed -f
2b18b0470SMasahiro Yamada# SPDX-License-Identifier: GPL-2.0-only
3b18b0470SMasahiro Yamada#
4b18b0470SMasahiro Yamada# sed script to filter out symbols that are not needed for System.map,
5b18b0470SMasahiro Yamada# or not suitable for kallsyms. The input should be 'nm -n <file>'.
6b18b0470SMasahiro Yamada#
71da177e4SLinus Torvalds# System.map is used by module-init tools and some debugging
8943ffb58SAdrian Bunk# tools to retrieve the actual addresses of symbols in the kernel.
91da177e4SLinus Torvalds#
101da177e4SLinus Torvalds# readprofile starts reading symbols when _stext is found, and
111da177e4SLinus Torvalds# continue until it finds a symbol which is not either of 'T', 't',
12c1346169SMasahiro Yamada# 'W' or 'w'.
13c1346169SMasahiro Yamada#
14c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
15c4802044SMasahiro Yamada# Ignored symbol types
16c4802044SMasahiro Yamada#
17c4802044SMasahiro Yamada
18c4802044SMasahiro Yamada# a: local absolute symbols
19c4802044SMasahiro Yamada# N: debugging symbols
20c4802044SMasahiro Yamada# U: undefined global symbols
21c4802044SMasahiro Yamada# w: local weak symbols
22c4802044SMasahiro Yamada/ [aNUw] /d
23c4802044SMasahiro Yamada
24c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
25c4802044SMasahiro Yamada# Ignored prefixes
26c4802044SMasahiro Yamada#  (do not forget a space before each pattern)
27c4802044SMasahiro Yamada
28c4802044SMasahiro Yamada# local symbols for ARM, MIPS, etc.
297a6c355bSMostafa Saleh/ \$/d
30c4802044SMasahiro Yamada
31c4802044SMasahiro Yamada# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
32c4802044SMasahiro Yamada/ \.L/d
33c4802044SMasahiro Yamada
34320e7c9dSMasahiro Yamada# arm64 EFI stub namespace
35320e7c9dSMasahiro Yamada/ __efistub_/d
36320e7c9dSMasahiro Yamada
37200dd957SPierre-Clément Tosi# arm64 local symbols in PIE namespace
38200dd957SPierre-Clément Tosi/ __pi_\\$/d
39200dd957SPierre-Clément Tosi/ __pi_\.L/d
40200dd957SPierre-Clément Tosi
41320e7c9dSMasahiro Yamada# arm64 local symbols in non-VHE KVM namespace
427a6c355bSMostafa Saleh/ __kvm_nvhe_\$/d
43320e7c9dSMasahiro Yamada/ __kvm_nvhe_\.L/d
44320e7c9dSMasahiro Yamada
45a951884dSArnd Bergmann# lld arm/aarch64/mips thunks
46a951884dSArnd Bergmann/ __[[:alnum:]]*Thunk_/d
47320e7c9dSMasahiro Yamada
48320e7c9dSMasahiro Yamada# CFI type identifiers
49320e7c9dSMasahiro Yamada/ __kcfi_typeid_/d
5071025b85SPierre-Clément Tosi/ __kvm_nvhe___kcfi_typeid_/d
5171025b85SPierre-Clément Tosi/ __pi___kcfi_typeid_/d
52320e7c9dSMasahiro Yamada
53c4802044SMasahiro Yamada# CRC from modversions
54c4802044SMasahiro Yamada/ __crc_/d
55c4802044SMasahiro Yamada
56c4802044SMasahiro Yamada# EXPORT_SYMBOL (symbol name)
57c4802044SMasahiro Yamada/ __kstrtab_/d
58c4802044SMasahiro Yamada
59c4802044SMasahiro Yamada# EXPORT_SYMBOL (namespace)
60c4802044SMasahiro Yamada/ __kstrtabns_/d
61c4802044SMasahiro Yamada
62*5ab23c79SAlexey Gladkov# MODULE_DEVICE_TABLE (symbol name)
63*5ab23c79SAlexey Gladkov/ __mod_device_table__/d
64*5ab23c79SAlexey Gladkov
65c4802044SMasahiro Yamada# ---------------------------------------------------------------------------
66320e7c9dSMasahiro Yamada# Ignored suffixes
67320e7c9dSMasahiro Yamada#  (do not forget '$' after each pattern)
68320e7c9dSMasahiro Yamada
69320e7c9dSMasahiro Yamada# arm
70320e7c9dSMasahiro Yamada/_from_arm$/d
71320e7c9dSMasahiro Yamada/_from_thumb$/d
72320e7c9dSMasahiro Yamada/_veneer$/d
73320e7c9dSMasahiro Yamada
74320e7c9dSMasahiro Yamada# ---------------------------------------------------------------------------
75c4802044SMasahiro Yamada# Ignored symbols (exact match)
76c4802044SMasahiro Yamada#  (do not forget a space before and '$' after each pattern)
77c4802044SMasahiro Yamada
78c4802044SMasahiro Yamada# for LoongArch?
79c4802044SMasahiro Yamada/ L0$/d
80ca09bf48SMasahiro Yamada
81320e7c9dSMasahiro Yamada# ppc
82320e7c9dSMasahiro Yamada/ _SDA_BASE_$/d
83320e7c9dSMasahiro Yamada/ _SDA2_BASE_$/d
84320e7c9dSMasahiro Yamada
853e86e4d7SMasahiro Yamada# MODULE_INFO()
863e86e4d7SMasahiro Yamada/ __UNIQUE_ID_modinfo[0-9]*$/d
873e86e4d7SMasahiro Yamada
88320e7c9dSMasahiro Yamada# ---------------------------------------------------------------------------
89320e7c9dSMasahiro Yamada# Ignored patterns
90320e7c9dSMasahiro Yamada#  (symbols that contain the pattern are ignored)
91320e7c9dSMasahiro Yamada
92320e7c9dSMasahiro Yamada# ppc stub
93320e7c9dSMasahiro Yamada/\.long_branch\./d
94320e7c9dSMasahiro Yamada/\.plt_branch\./d
95