2024-05-20 21:42:10 +09:00
#!/bin/sed -f
# SPDX-License-Identifier: GPL-2.0-only
#
# sed script to filter out symbols that are not needed for System.map,
# or not suitable for kallsyms. The input should be 'nm -n <file>'.
#
2005-04-16 15:20:36 -07:00
# System.map is used by module-init tools and some debugging
2006-01-10 00:10:13 +01:00
# tools to retrieve the actual addresses of symbols in the kernel.
2005-04-16 15:20:36 -07:00
#
# readprofile starts reading symbols when _stext is found, and
# continue until it finds a symbol which is not either of 'T', 't',
2022-09-26 18:02:25 +09:00
# 'W' or 'w'.
#
2023-03-08 20:52:38 +09:00
# ---------------------------------------------------------------------------
# Ignored symbol types
2022-09-26 18:02:27 +09:00
#
2023-03-08 20:52:38 +09:00
# a: local absolute symbols
# N: debugging symbols
# U: undefined global symbols
# w: local weak symbols
/ [aNUw] /d
# ---------------------------------------------------------------------------
# Ignored prefixes
# (do not forget a space before each pattern)
# local symbols for ARM, MIPS, etc.
2023-06-06 17:35:53 +00:00
/ \\$/d
2023-03-08 20:52:38 +09:00
# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
/ \.L/d
2023-03-08 20:52:40 +09:00
# arm64 EFI stub namespace
/ __efistub_/d
2023-06-06 18:19:36 +00:00
# arm64 local symbols in PIE namespace
/ __pi_\\$/d
/ __pi_\.L/d
2023-03-08 20:52:40 +09:00
# arm64 local symbols in non-VHE KVM namespace
2023-06-06 17:35:53 +00:00
/ __kvm_nvhe_\\$/d
2023-03-08 20:52:40 +09:00
/ __kvm_nvhe_\.L/d
2024-02-15 09:32:08 +01:00
# lld arm/aarch64/mips thunks
/ __[[:alnum:]]*Thunk_/d
2023-03-08 20:52:40 +09:00
# CFI type identifiers
/ __kcfi_typeid_/d
2023-06-26 12:29:46 +00:00
/ __kvm_nvhe___kcfi_typeid_/d
/ __pi___kcfi_typeid_/d
2023-03-08 20:52:40 +09:00
2023-03-08 20:52:38 +09:00
# CRC from modversions
/ __crc_/d
# EXPORT_SYMBOL (symbol name)
/ __kstrtab_/d
# EXPORT_SYMBOL (namespace)
/ __kstrtabns_/d
2023-03-08 20:52:40 +09:00
# ---------------------------------------------------------------------------
# Ignored suffixes
# (do not forget '$' after each pattern)
# arm
/_from_arm$/d
/_from_thumb$/d
/_veneer$/d
2023-03-08 20:52:38 +09:00
# ---------------------------------------------------------------------------
# Ignored symbols (exact match)
# (do not forget a space before and '$' after each pattern)
# for LoongArch?
/ L0$/d
2023-03-08 20:52:39 +09:00
2023-03-08 20:52:40 +09:00
# ppc
/ _SDA_BASE_$/d
/ _SDA2_BASE_$/d
# ---------------------------------------------------------------------------
# Ignored patterns
# (symbols that contain the pattern are ignored)
# ppc stub
/\.long_branch\./d
/\.plt_branch\./d