xref: /linux/scripts/mksysmap (revision 07fdad3a93756b872da7b53647715c48d0f4a2d0)
1#!/bin/sed -f
2# SPDX-License-Identifier: GPL-2.0-only
3#
4# sed script to filter out symbols that are not needed for System.map,
5# or not suitable for kallsyms. The input should be 'nm -n <file>'.
6#
7# System.map is used by module-init tools and some debugging
8# tools to retrieve the actual addresses of symbols in the kernel.
9#
10# readprofile starts reading symbols when _stext is found, and
11# continue until it finds a symbol which is not either of 'T', 't',
12# 'W' or 'w'.
13#
14# ---------------------------------------------------------------------------
15# Ignored symbol types
16#
17
18# a: local absolute symbols
19# N: debugging symbols
20# U: undefined global symbols
21# w: local weak symbols
22/ [aNUw] /d
23
24# ---------------------------------------------------------------------------
25# Ignored prefixes
26#  (do not forget a space before each pattern)
27
28# local symbols for ARM, MIPS, etc.
29/ \$/d
30
31# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
32/ \.L/d
33
34# arm64 EFI stub namespace
35/ __efistub_/d
36
37# arm64 local symbols in PIE namespace
38/ __pi_\\$/d
39/ __pi_\.L/d
40
41# arm64 local symbols in non-VHE KVM namespace
42/ __kvm_nvhe_\$/d
43/ __kvm_nvhe_\.L/d
44
45# lld arm/aarch64/mips thunks
46/ __[[:alnum:]]*Thunk_/d
47
48# CFI type identifiers
49/ __kcfi_typeid_/d
50/ __kvm_nvhe___kcfi_typeid_/d
51/ __pi___kcfi_typeid_/d
52
53# CRC from modversions
54/ __crc_/d
55
56# EXPORT_SYMBOL (symbol name)
57/ __kstrtab_/d
58
59# EXPORT_SYMBOL (namespace)
60/ __kstrtabns_/d
61
62# MODULE_DEVICE_TABLE (symbol name)
63/ __mod_device_table__/d
64
65# ---------------------------------------------------------------------------
66# Ignored suffixes
67#  (do not forget '$' after each pattern)
68
69# arm
70/_from_arm$/d
71/_from_thumb$/d
72/_veneer$/d
73
74# ---------------------------------------------------------------------------
75# Ignored symbols (exact match)
76#  (do not forget a space before and '$' after each pattern)
77
78# for LoongArch?
79/ L0$/d
80
81# ppc
82/ _SDA_BASE_$/d
83/ _SDA2_BASE_$/d
84
85# MODULE_INFO()
86/ __UNIQUE_ID_modinfo[0-9]*$/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